java - 多个不区分大小写的字符串替换

标签 java java-8

我想从一个字符串中替换多个不区分大小写的字符串。

我本可以使用: 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 casereplaceAll()

来自评论@flown(谢谢)你需要使用

str.replaceAll("(?i)" + Pattern.quote(old[i]), nw[i]);

因为正则表达式将一些具有不同含义的特殊字符,例如:. 视为任何单个字符

所以使用 Pattern.quote 就可以做到这一点。

关于java - 多个不区分大小写的字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54306009/

相关文章:

java - 如何将已检查的异常从 CompletableFuture 传递到 ControllerAdvice

java - 无法将 chrome 连接到 HttpsServer

Java 词搜索求解器设计方法

java - 在java中获取文件路径

java - 如何让我的 Java GUI 正确计算字段?

java - 在使用流时创建一个排序集

java - 需要一些关于这个通用 Java 的帮助

java - 在java中打开参数

java - 函数 ref 作为 arg 的行为不明确

java - 如何使用java 8按 'name'对对象进行分组?