2015-04-19 63 views
1

在我製作的Android應用程序中,我編程構建了TextView並將String傳遞給setText。我傳遞的字符串是從另一個源獲得的,它包含轉義字符。下面是一個例子字符串:TextView中顯示的轉義字符

AxnZt_35\/435\/46\/34 

\/其實應該只是/。但是TextView顯示了完全一樣的東西在上面的例子。

我使用構造TextView代碼:

TextView textView = new TextView(context); 
textView.setText(text); 
textView.setTextColor(color); 
textView.setTypeface(Typeface.DEFAULT_BOLD); 
textView.setTextSize(14); 

所以我的問題是,我怎麼能不顯示額外\?我只想將上面的示例顯示爲:

AxnZt_35/435/46/34 

謝謝。

EDIT

我以上所提供的字符串僅僅是一個例子。字符串中可能還有其他字符。例如,字符/\本身是完全有效的。問題是/顯示爲\/

回答

1

從@ Numan1617答案是接近的,但對於轉義字符和replaceAll(),你必須逃脫他們兩次。

請參閱This Post

因此,在這種情況下,正確的代碼是:

String str = "AxnZt_35\\/435\\/46\\/34"; 

    System.out.println(str); //prints AxnZt_35\/435\/46\/34 

    String s2 = str.replaceAll("\\\\/", "/"); 

    System.out.println(s2); //prints AxnZt_35/435/46/34 
+1

感謝您的解釋和示例!你替換(\\\\ /)的方式似乎有訣竅... +1 – Roshnal

0

你必須使用字符串的replaceAll方法設置文本之前替換\的所有出現:

textView.setText(text.replaceAll("\\", "")); 
+0

但是,這不會取代正常的\字符嗎? – Roshnal

+0

公平點。查看編輯。 – Numan1617

+0

試過了。編譯器抱怨字符串中有一個無效的轉義字符。 – Roshnal

0

運行此作爲普通Java

public class Klass{ 

    public static void main(String[] args) { 
     System.out.println(new String("\\/")); 
     System.out.println(new String("\\/").replaceAll("/", "")); 
     System.out.println(new String("\\/").replaceAll("\\/", "")); 
     System.out.println(new String("\\/").replaceAll("\\\\/", "")); 
    } 

} 

爲\正則表達式爲 「\\」:在正則表達式1雙\等於一個\在新的字符串()

+0

是的,但是我遇到的問題是,如果我使用「\\」進行轉義,那麼它將取代所有的文本。但是你最後的選擇是正確的 – Roshnal