我有一个包含字符串对的二维数组。如果找到一个字符串,则应将其替换为该字符串。
代码:
for (int i = 0; i < pairs.length; i++) {
if (name.contains(pairs[i][0])) {
name.replaceAll(pairs[i][0], abbr[i][1]);
}
}
它不是替换字符串。错误是什么?
答案 0 :(得分:4)
您忽略了分配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]);
}
}
请注意,java String
个对象是不可变的,因此调用name.replaceAll
不会修改name
,它会返回 new String
进行了修改。
答案 1 :(得分:2)
字符串是不可变的。
name.replaceAll(pairs[i][0], abbr[i][1]);
创建一个新的String(它不会修改“name”字符串)
尝试
name = name.replaceAll(pairs[i][0], abbr[i][1]);
答案 2 :(得分:0)
正在创建字符串的修改版本,但它的返回值正在丢失。
name = name.replaceAll(pairs [i] [0],abbr [i] [1]);
应该有用。