Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文本视图中显示的转义字符_Java_Android_Textview_Escaping - Fatal编程技术网

Java 文本视图中显示的转义字符

Java 文本视图中显示的转义字符,java,android,textview,escaping,Java,Android,Textview,Escaping,在我正在制作的一个Android应用程序中,我以编程方式构造了一个TextView,并将String传递给setText。我传递的字符串是从另一个源获得的,它包含转义字符。下面是一个示例字符串: AxnZt_35\/435\/46\/34 \/实际上应该是/。但是TextView显示的内容与上面的示例完全相同 我用来构造TextView的代码: TextView textView = new TextView(context); textView.setText(text); textView

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

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
谢谢

编辑


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

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

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

@Numan1617的答案很接近,但对于转义字符和
replaceAll()
,必须转义两次

因此,在这种情况下,正确的代码是:

    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
将其作为普通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("\\\\/", ""));
    }

}

“\”的正则表达式是“\ \”:在正则表达式中,一对\等于新字符串()中的一个\但这不会同时替换普通\字符吗?尝试过了。编译器抱怨字符串文本中存在无效的转义字符。这不等于您发布的第一个答案吗?(只有“\”)。然后,它将替换所有\字符。此外,编译器也拒绝了这一点。表示它是非法或不受支持的转义序列:-/Yes,但我遇到的问题是,如果我使用“\\”进行转义,那么它将替换文本中的所有。但您最后的选择是正确的,谢谢您的解释和示例!你替换(\\\\/)的方式似乎起到了作用+1.