Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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_Regex_String_Replace_Special Characters - Fatal编程技术网

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(“\\”,”),这将解决我的问题。无论如何,谢谢:)