2011-03-24 28 views
0
\

我怎样才能避免字符串中的双引号? 对于例如,java:用“”替换“”

input: "Nobody" 
output: \"Nobody\" 

我试过某事像这样,这是行不通的:

String name = "Nobody"; 
name.replaceAll("\"", "\\\""); 
+1

以何种方式是不工作?请记住,在'String name =“Nobody”中,双引号实际上并不是字符串的一部分,它们只是分隔符。 – NPE 2011-03-24 10:25:16

+0

对不起,我的道歉:字符串是这样的:String name =“”Nobody“”; – Arjun 2011-03-24 10:28:27

+0

这不是正确的语法,我怀疑你的意思是'String name =“\”Nobody \“”;',这会导致输出“Nobody”。 – Thomas 2011-03-24 10:31:44

回答

6

因为你的字符串“没有人”没有在任何双引号!

String name = "Nobo\"dy"; 
    name = name.replaceAll("\"", "\\\\\""); 

    System.out.println(name); 
  1. 您的字符串没有双引号
  2. 你没有重新分配的名称(记住,字符串在Java中是不可变的)
  3. 你的正则表达式是不完全正确的。

此外,您不需要使用RegEx进行这种简单替换。

试试看

name = name.replace("\"", "\\\""); 
+0

对不起,我的道歉:字符串是这样的:String name =“”Nobody“”; – Arjun 2011-03-24 10:28:49

5

adarshr是正确的,而且,你是忽略了返回的字符串的通知,像这样做:

String name = "Nobody"; 
name = name.replaceAll("\"", "\\\""); 

字符串在Java是imutable

编辑:自从我写这篇文章以来,adarshr已经将他的答案改变得更好了(如果有人想知道我为什么写这个)

0

name.replaceAll(...)不会更改的名字 - 它返回字符串,所以你需要写:

name = name.replaceAll(...) 

JavaDoc

除此之外您的字符串不包含“