Java 文本视图中显示的转义字符
在我正在制作的一个Android应用程序中,我以编程方式构造了一个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
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.