2015-05-29 88 views
-1
  1. 我試圖在多個班級,功能
  2. 來替換多個字符串爲什麼這個例子不工作?字符串替換Java函數

    public static String symbole(String sym) 
    { 
    sym = sym.replace("&" , "§"); 
    sym = sym.replace("[<3]" , "\u2764"); 
    return sym; 
    } 
    String test = "This Dont work... why [<3]"; 
    symbole(test); 
    

我怎麼能代替這個... 什麼建議嗎? 請幫忙給我完美的英語

+0

工作正常,我。你在看什麼? –

+5

你是什麼意思「它不起作用?」。它運作良好。你面臨什麼問題? – K139

+0

你能提供一些例子給字符串和預期的替換嗎? – MaxZoom

回答

2

您的問題很可能是因爲您期望您的函數改變了您傳遞給方法的原始字符串。

字符串是在java中不可變的,再說,你不能修改傳遞給方法,從該方法原始參考。

要獲得最可能期望的結果,請將方法的返回值存儲在新引用中,或將測試參考點存儲爲返回的String。

所以,你可以嘗試:

test = symbole(test); 

String replacedTest = symbole(test): 
2

下面的語句遺憾:

sym.replace("[<3]", "\u2764"); 

工程,將與「心臟」字符替換[<3]

我想你的問題是,你認爲test將被修改,當你將它傳遞給該方法。這是行不通的,因爲String是不可變的;呼叫replace實際返回一個新的String實例。由於Java是按值傳遞的,因此無法將其分配回sym,並且期望test發生更改,並且無法重新設置引用。但是,因爲你已經返回修改後的字符串,你只需要返回值分配回test

test = symbole(test); 

您還可以,如果你想分配到一個新的變量:

String modified = symbole(test);