转义TextView中显示的字符

时间:2015-04-19 17:04:01

标签: java android textview escaping

在我制作的Android应用中,我以编程方式构建TextView并将String传递给setText。字符串传递是从另一个源获取的,它包含转义字符。这是一个示例String:

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

感谢。

修改

我上面提供的字符串只是一个例子。字符串中可能还有其他字符。例如,字符/\本身就完全有效。问题是/显示为\/

3 个答案:

答案 0 :(得分: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 :(得分:0)

在使用Strings replaceAll方法设置文本之前,您必须替换所有出现的\:

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

答案 2 :(得分: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("\\\\/", ""));
    }

}

\的正则表达式是“\\”:在正则表达式中,一对\在新String()中等于1 \