2012-08-29 140 views
0
text = Daily 10 am - 5 pm.\\nClosed Thanksgiving and Christmas. 

private String activateNewlines(String text) { 
     String temp = text; 
     if (text.contains("\\n")) { 
      while (temp.contains("\\n")) { 
       int index = temp.indexOf("\\n"); 
       temp = temp.substring(0, index) + temp.substring(index + 1); 
      } 
      return temp; 
     } 

     return text; 
    } 

我試圖擺脫一個額外的斜槓爲特殊字符,但由於某種原因子串結束刪除正斜槓。子串不像字符串的開始處的斜線?最後一個字符串最終成爲子串刪除正斜槓?

Daily 10 am - 5 pm.nClosed Thanksgiving and Christmas. 

我需要的是

Daily 10 am - 5 pm.\nClosed Thanksgiving and Christmas. 

編輯:什麼最終爲我工作:

String temp = text; 
    if (text.contains("\\n")) { 
     temp = temp.replaceAll("\\\\n", "\\\n"); 
     int x = 5; 
     return temp; 
    } 

    return text; 

這實際上允許TextView的識別換行符。

回答

0

我認爲你應該簡單地做到這一點,

string.replaceAll("\\n", "\n") 

詳細代碼,

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    String text = "Daily 10 am - 5 pm.\\nClosed Thanksgiving and Christmas."; 
    Log.d("TEMP", "*********************************" + activateNewlines(text)); 

} 

private String activateNewlines(String text) { 
    String temp = text; 

    return temp.replaceAll("\\n", "\n"); 
} 

logcat的輸出,

08-28 19:16:00.944: D/TEMP(9739): *********************************Daily 10 am - 5 pm.\nClosed Thanksgiving and Christmas. 
+0

是的,我確實嘗試過,但在檢查調試器中的值後,出人意料地發現沒有任何變化。 – ShrimpCrackers

+0

我剛纔跑了。它工作正常。我爲你編輯了源代碼。 – VendettaDroid

+0

奇怪的是,我不知道爲什麼,replaceAll(「\\ n」,「\ n」)不適合我。最後的工作是一個較早的解決方案(儘管海報已刪除),請參閱原文。 – ShrimpCrackers

0

我有點困惑,但在這裏。所以,"\n"是一條新線。 "\\n"是反斜槓和n,\n。你可以使用replaceAll來擺脫它:string.replaceAll("\n", "")。這是我困惑的地方,我不確定你到底想要什麼。如果你想保留新的版本,那麼你必須從任何地方得到它(例如,你應該得到一個\n字符而不是轉義版本)。

+0

在我的程序中的字符串包含 「\\ N」但我想用「\ n」替換那些,希望當我設置TextView.setText時,它會識別換行符,並在換行符上實際繪製字符。全部替換似乎不起作用。我看了temp = replaceAll(...)後的值,沒有任何東西被替換。 – ShrimpCrackers

+0

嗯然後@VendettaDroid建議('string.replaceAll(「\\ n」,「\ n」)')應該工作。除非字符串的內容實際上是別的。 – dmon