Java将replaceAll与转义字符串一起使用

时间:2014-05-08 06:17:52

标签: java xml regex string

晚安Stack Overflow!

今晚我试图删除"标题"从XML我已解析为字符串并使用replaceAll删除以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

来自字符串。因为它将与另一个XML字符串连接在一起,而留下它会留下其中的两个。

所以我试过了:

// getXML already has my XML.
getXML = getXML.replaceAll("<?xml version="1.0" encoding="UTF-8" standalone="no"?>", "");

由于&#34;&#34;这无法编译。字符串内部。然后我尝试使用转义序列:

String headerXMLString = ("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>");
getXML = getXML.replaceAll(headerXMLString, "");

这也失败了,虽然程序本身运行但我假设由于转义(\)它没有删除字符串

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

由于String在技术上不一样。

如何解决这个问题?非常感谢任何和所有帮助。

3 个答案:

答案 0 :(得分:4)

请勿使用执行正则表达式搜索的replaceAll() 而是使用replace(),它使用纯文本搜索。

getXML = getXML.replace(headerXMLString, "");

请注意,尽管存在令人遗憾的名称差异,但replace()仍会替换找到的所有事件。


更好的方法是使用正则表达式匹配XML标头,无论它包含什么:

getXML = getXML("^<?xml.*?\\?>", "");

如果没有标题,这也无济于事。

答案 1 :(得分:3)

您可以使用replace()代替replaceAll()跟随我的作品

String s = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>";
String s2 = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>";
s2 = s2.replace(s, "");
System.out.println(s2);

<强> OP:

<blank>

编辑:

如何关注?

String s = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>";
Scanner sc = new Scanner(new File("D:\\temp.txt"));
String s2 = sc.nextLine();
System.out.println("b4 "+s2);
s2 = s2.replaceAll(s, "");
System.out.println("aftr "+s2);

文件内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

答案 2 :(得分:1)

如果您想使用文字模式,请使用Pattern.Quote or \Q ... \E

Pattern.quote("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>")

<强> http://regex101.com/r/cF3aI1

使用Java示例显示两种方法:

<强> https://ideone.com/mZwwOs