晚安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在技术上不一样。
如何解决这个问题?非常感谢任何和所有帮助。
答案 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 强>