我想从一个字符串中替换多个不区分大小写的字符串。
我本可以使用:
org.apache.commons.lang.StringUtils.replaceEach(text, searchList, replacementList)
但适用于区分大小写的字符串。
是否有类似的方法适用于不区分大小写的字符串?
static String[] old = {"ABHISHEK","Name"};
static String[] nw = {"Abhi","nick name"};
static String s="My name is Abhishek";
System.out.println(StringUtils.replaceEach(s, old, nw));
输出:
My name is Abhishek
预期:
My nick name is Abhi
最佳答案
你可以尝试使用regex存档
例子
String str = "Dang DANG dAng dang";
//replace all dang(ignore case) with Abhiskek
String result = str.replaceAll("(?i)dang", "Abhiskek");
System.out.println("After replacement:" + " " + result);
结果:
After replacement: Abhiskek Abhiskek Abhiskek Abhiskek
编辑
String[] old = {"ABHISHEK","Name"};
String[] nw = {"Abhi","nick name"};
String s="My name is Abhishek";
//make sure old and nw have same size please
for(int i =0; i < old.length; i++) {
s = s.replaceAll("(?i)"+old[i], nw[i]);
}
System.out.println(s);
结果:
My nick name is Abhi
基本理想:Regex ignore case和 replaceAll()
来自评论@flown(谢谢)你需要使用
str.replaceAll("(?i)" + Pattern.quote(old[i]), nw[i]);
因为正则表达式将一些具有不同含义的特殊字符,例如:.
视为任何单个字符
所以使用 Pattern.quote
就可以做到这一点。
关于java - 多个不区分大小写的字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54306009/