2015-12-03 127 views
-2

我幾年來一直是專業程序員,現在我遇到了一個我無法解釋的問題。我有一個關聯的枚舉類型和一個String作爲實例變量的對象。對於某些類型,我想用字符串中的句點替換反斜槓。我知道一個事實,即資產被正確地識別爲ContentType.text,但沒有被執行以下代碼:在簡單的Java字符串上替換替換錯誤

String modifiedKeyPath = keyPath.toString(); 

if(!ContentType.slot.equals(type) && !ContentType.node.equals(type)) { 
    modifiedKeyPath.replace("/", "."); 
} 

DiffFields diffField = new DiffFields(type1, name, modifiedKeyPath) 

澄清:

type = ContentType.text 
keyPath = "asdf/ghjk" 

的modifiedKeyPath仍然"asdf/ghjk"代碼後被執行。任何人都可以想到爲什麼會發生這種情況?我很困惑

+0

反斜槓是\。斜槓是/。 – rgettman

+0

爲什麼不使用調試器來查看編譯器和JRE如何解釋你的代碼? – kryger

+0

另一個dup:[提示java.lang.String.replace問題?](http://stackoverflow.com/questions/1166905/hints-for-java-lang-string-replace-problem)。 – rgettman

回答

2

String.replace(CharSequence, CharSequence)不在位(Java String是不可變的)。分配結果。類似於

modifiedKeyPath = modifiedKeyPath.replace("/", "."); 
+2

爲什麼回答這麼明顯的愚蠢? [dupes](http://stackoverflow.com/questions/1166905/hints-for-java-lang-string-replace-problem)[dupes](http://stackoverflow.com/questions/12734721/string-replace-不替換字符)[dupes](http://stackoverflow.com/questions/22492225/string-replace-not-working-as-i-think-it-should?lq=1)... – eis