我有一个包含字符串对的二维数组。如果找到一个字符串,它应该用它的对替换它。
编码:
for (int i = 0; i < pairs.length; i++) {
if (name.contains(pairs[i][0])) {
name.replaceAll(pairs[i][0], abbr[i][1]);
}
}
它没有替换字符串。错误是什么?
您忽略了分配 的结果replaceAll
,因此修改丢失。
也许您想将修改后的字符串保留为name
:
for (int i = 0; i < pairs.length; i++) {
if (name.contains(pairs[i][0])) {
name = name.replaceAll(pairs[i][0], abbr[i][1]);
}
}
请注意,javaString
对象是不可变的,因此调用name.replaceAll
不会修改name
,它会返回一个带有修改的新 String
对象。
字符串是不可变的。
name.replaceAll(pairs[i][0], abbr[i][1]);
创建一个新字符串(它不会修改“名称”字符串)
尝试
name = name.replaceAll(pairs[i][0], abbr[i][1]);
正在创建字符串的修改版本,但是它的返回值正在丢失。
name = name.replaceAll(pairs[i][0], abbr[i][1]);
应该管用。