首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java字符串中将"替换成\"输出,怎么解决

2013-04-27 
java字符串中将替换成\输出,如何解决.字符串中包含双引号字符,要经过转化将双引号替换为反斜杠加双引号,

java字符串中将"替换成\"输出,如何解决.
字符串中包含双引号字符,要经过转化将双引号替换为反斜杠加双引号,并输出.
例如:
af"fd"fase
转换后输出
af"fd"fase
我用的字符串类的replaceAll(""","\\"")方法,为什么反斜杠不输出?
结果还是
af"fd"fase Java 字符串 正则表达式 转义字符
[解决办法]
String str = "asdfa"asdfasdf"asdfasdf"";

str = str.replaceAll(""",Matcher.quoteReplacement("\\""));

System.out.println(str);

replaceAll第二个参数要是有正则的特殊字符的话,会引起问题的。
[解决办法]


replaceAll
public String replaceAll(String regex,
                         String replacement)使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 
调用此方法的 str.replaceAll(regex, repl) 形式与以下表达式产生的结果完全相同: 

Pattern.compile(regex).matcher(str).replaceAll(repl)
注意,在替代字符串中使用反斜杠 (\) 和美元符号 ($) 与将其视为字面值替代字符串所得的结果可能不同;请参阅 Matcher.replaceAll。如有需要,可使用 Matcher.quoteReplacement(java.lang.String) 取消这些字符的特殊含义。 


参数:
regex - 用来匹配此字符串的正则表达式
replacement - 用来替换每个匹配项的字符串 
返回:
所得 String 
抛出: 
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始: 
1.4 
另请参见:
Pattern

[解决办法]

import java.util.regex.*;


public class Test01 {
public static void main(String[] args){
  Pattern p = Pattern.compile(""");
  Matcher m = p.matcher("af"fd"fase");
  p(m.replaceAll("\\\\""));
}

public static void p(Object obj){
System.out.println(obj);
}
}



System.out.println("af"fd"fase".replaceAll(""","\\\\""));



af"fd"fase

[解决办法]
引用:
引用:
replaceAll
public String replaceAll(String regex,
                         String replacement)使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 
调用此方法的 str.replaceAll(regex, repl) 形……




主要是replaceAll这个函数在作怪,在这个函数的执行过程中,还要将斜杠做一次转义处理,
也就是"\"传到replaceAll里面后,会变成"",在它里面,又会将""当成转义字符

比如replaceAll("\","4"); 在当前java代码里,"\" = \

传到函数replaceAll里面后,就变成了"", 它也把""当成是一个字符串,而这个字符串是无法识别的,就会报错

综上,应该这样写:
String s="af\\fd\\fase";
System.out.println(s.replaceAll("\\\","\\\\\\\"));

热点排行