Java 替换字符串中的特殊字符
我有一个正在打印的Java 替换字符串中的特殊字符,java,regex,string,replace,special-characters,Java,Regex,String,Replace,Special Characters,我有一个正在打印的字符串str=\'abc\'。它的打印方式类似于\'abc'\而不是'abc' 我尝试过这个选项:str.replaceAll(“\\”,”)但它给了我java.util.regex.PatternSyntaxException:索引1附近出现意外的内部错误 任何人都可以帮助解决此问题。为什么要使用regex您可以: str = str.replace("\\", ""); 如果必须使用正则表达式,则需要使用: str = str.replace("\\\\", "");
字符串str=\'abc\'
。它的打印方式类似于\'abc'\
而不是'abc'
我尝试过这个选项:str.replaceAll(“\\”,”)代码>但它给了我java.util.regex.PatternSyntaxException:索引1附近出现意外的内部错误
任何人都可以帮助解决此问题。为什么要使用regex您可以:
str = str.replace("\\", "");
如果必须使用正则表达式,则需要使用:
str = str.replace("\\\\", "");
在Java中,正则表达式需要双重转义,因为字符串和正则表达式引擎bot需要转义。您的方法:
private static String getNewString(String str) {
str.replaceAll("\\\\", "");
System.out.println("The updated String : "+str);
return str;
}
将返回初始字符串,因为字符串是不可变的。str.replaceAll将保持str不变,并生成一个新字符串
将您的测试用例更改为:
public static void main(String ...string) {
String str = "\\'a\\'";
System.out.println("The original String : "+str);
str = getNewString(str);
}
private static String getNewString(String str) {
String rez = str.replaceAll("\\\\", "");
System.out.println("The updated String : "+rez);
return rez;
}
我想你的意思是:
公共课Abc{
public static void main(String[] args) {
String str ="\'abc\'";
System.out.println(str);
}
}
输出:“abc”
这对我来说是正确的。请您给语言加上标签好吗?可能是Java,但让我们确定一下。是的,它是Java。问题是,我们打印从java读取的C代码表达式。例如,char myChar='a',当这个表达式出现在我(java级别)时,我们得到myChar=\'a\'。所以我们需要打印与“[myChar='a']”相同的内容。现在,它使用特殊字符打印。字符串str=“\\'a\\'”;System.out.println(“原始字符串:“+str”);str.replace(“\\”,“);未打印预期结果。我的测试用例是:公共类StringTest{public static void main(String…String){String str=“\\'a\\””System.out.println(“原始字符串:+str);str=getNewString(str);}私有静态字符串getNewString(String str){str str.replaceAll(\\\\\\\\”,“”);System.out.println(更新后的字符串:“+str”;return str;}}replaceAll(“\\\”)
与replaceAll(“\\”)
不同。Anubhava:这对我不起作用。当我使用str.replaceAll(“\\\”,“)时,它仍然以“abc”的形式给我输出;也可以在ideone
上为不起作用的内容创建代码示例,我将进一步调查。public static void main(String[]args){String str=“\'abc\'”System.out.println(str.replace(“\\”,”);}这对我很有效…实际上我对我的输入感到困惑,所以输入将是“abc”,我可以使用replace(“\\”,”),这将解决我的问题。无论如何,谢谢:)