//This source is a line read from a file
String src = "23570006,music,**,wu(),1,exam,\"Monday9,10(H2-301)\",1-10,score,";
//This sohuld be from a matcher.group() when Pattern.compile("\".*?\"")
String group = "\"Monday9,10(H2-301)\"";
src = src.replaceAll("\"", "");
group = group.replaceAll("\"", "");
String replacement = group.replaceAll(",", "#@");
System.out.println(src.contains(group));
src = src.replaceAll(group, replacement);
System.out.println(group);
System.out.println(replacement);
System.out.println(src);
我正在尝试替换","
之间的\"s
,以便我可以使用String.split()
后者。
但是上面的工作没有用,结果就是:
true
Monday9,10(H2-301)
Monday9#@10(H2-301)
23570006,music,**,wu(),1,exam,Monday9,10(H2-301),1-10,score,
但是当我将src字符串更改为
时 String src = "123\"9,10\"123";
String group = "\"9,10\"";
效果很好
true
9,10
9#@10
1239#@10123
字符串有什么问题???
答案 0 :(得分:5)
(
和)
是正则表达式元字符;如果你想要按字面意思匹配它们,就需要进行转义。
String group = "\"Monday9,10\\(H2-301\\)\"";
^ ^
你需要两个斜杠的原因是因为字符串文字中的\
本身就是一个转义字符,所以"\\"
是一个长度为1的字符串,包含一个斜杠。