我有一個包含字符串對的二維數組。如果找到一個字符串,它應該用它的對替換它。java字符串全部替換
代碼:
for (int i = 0; i < pairs.length; i++) {
if (name.contains(pairs[i][0])) {
name.replaceAll(pairs[i][0], abbr[i][1]);
}
}
它不是替換字符串。什麼是錯誤?
我有一個包含字符串對的二維數組。如果找到一個字符串,它應該用它的對替換它。java字符串全部替換
代碼:
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]);
}
}
需要注意的是java的String
對象是不可改變的,因此調用name.replaceAll
不修改name
,它返回一個新String
與修改。
字符串是不可變的。
name.replaceAll(pairs[i][0], abbr[i][1]);
創建一個新的String(不修改「名稱」字符串)
嘗試
name = name.replaceAll(pairs[i][0], abbr[i][1]);
正在創建的字符串的修改版本,但它的返回值正在失去。
name = name.replaceAll(pairs [i] [0],abbr [i] [1]);
應該工作。
我不認爲字符串正在被修改,一個新的字符串被修改並被傳回。 – RNJ
謝謝,我沒有意識到我是這樣寫的!編輯我的答案。 – SamuelDavis
一些示例輸入和預期輸出可能有所幫助。除了「審查」,還有replace()(或)replaceAll()的情況嗎?最後但並非最不重要的一點,字符串是不可改變的。 – kosa
用'pairs [i] [1]'替換'abbr [i] [1]'...另外,使用'Map'代替雙目數組... –
XenoRo
我真的沒有這個問題......你可以在運行你的代碼之前發佈數組的內容,以及在你運行代碼之後數組的所需內容? – 11684