Java替换字符串序列忽略大小写?

Java替换字符串序列忽略大小写?,java,string,replace,compare,pattern-matching,Java,String,Replace,Compare,Pattern Matching,对于一个项目,我给出了一个程序搜索的序列,并试图找到一个字母序列。如果找到了,它会将这些序列大写并打印出行 例如,在我运行程序时,按顺序bcdaaab指定字符串aa作为要查找的内容 应该打印的是:bcdAAAb 打印的内容是:bcdAAab(注意第三个a没有封顶) 这是因为我只是对字符串使用replaceAll函数,它不忽略大小写。我想知道是否有任何方法可以使它在我搜索时忽略大小写。如果我根本不能使用replaceAll,有人可以建议其他算法吗?您遇到的问题是,即使使用不区分大小写的匹配,它也会

对于一个项目,我给出了一个程序搜索的序列,并试图找到一个字母序列。如果找到了,它会将这些序列大写并打印出行

例如,在我运行程序时,按顺序
bcdaaab
指定字符串
aa
作为要查找的内容

应该打印的是:
bcdAAAb

打印的内容是:
bcdAAab
(注意第三个
a
没有封顶)


这是因为我只是对字符串使用
replaceAll
函数,它不忽略大小写。我想知道是否有任何方法可以使它在我搜索时忽略大小写。如果我根本不能使用
replaceAll
,有人可以建议其他算法吗?

您遇到的问题是,即使使用不区分大小写的匹配,它也会替换第一个“aa”,然后从原始替换开始搜索下一个匹配。因为替换后的下一个位置是一个单独的“A”,后面跟着一个不同的字母,所以不认为它是匹配的。 这将解决您的问题:

“bcdaaab”.replaceAll((?i)a((?=a)|(?试试这个

String s1 = "bcdaaab";
String s2 = "aa";

StringBuilder sb = new StringBuilder(s1);

for (int i = 0;; i++) {
    i = s1.indexOf(s2, i);
    if (i == -1) {
        break;
    }
    sb.replace(i, i + s2.length(), s2.toUpperCase());
}
System.out.println(sb);
输出

bcdAAAb

如果更换
aA
结果也应该是
bcdAAAb
您可以使用

String s1 = "bcdaaab";
String s2 = "aA".toUpperCase();

StringBuilder sb = new StringBuilder(s1);
s1 = s1.toUpperCase();

for (int i = 0;; i++) {
    i = s1.indexOf(s2, i);
    if (i == -1) {
        break;
    }
    sb.replace(i, i + s2.length(), s2.toUpperCase());
}
System.out.println(sb);
这对你有帮助

String abc ="NewDc";
System.out.println(abc.replaceAll("(?i)dc"," Data Center."));

代码的可能重复不会忽略大小写,因此对于
aA
它将不起作用。此外,您也没有在任何地方使用
s3
。也许您应该在
s2
声明和
i=s3.indexOf(s2,i)之后添加
s2=s2.toUpperCase();
inside loop?反正+1是一个简洁的好答案,因为它可以很容易地更正,或者如果我不理解OP要求,就不需要更正:)你是对的,删除了s3,我也不太确定要求我添加了代码的更新版本,以便在替换部分忽略大小写。希望你不介意。