[英]Java Regex To Remove Middle of String
我已經在網站上查看了幾個正則表達式問題,但都無濟於事,如果人們對此表示反感,對不起。 我在XML文件中有此字符串:
<MessageRef>Trading01</MessageRef>
每次生成xml時, Trading01
將是一個不同的String(需要手動輸入)。 目的是在此處自動生成任何唯一值以進行測試。 如何刪除<MessageRef>
和</MessageRef>
?
我已經嘗試過了,但是沒有用:
message.replaceAll("(<MessageRef>)[^&]*(</MessageRef>)", String.valueOf(System.currentTimeMillis()));
我知道這是一個簡單的問題,但整個上午一直困擾着我! 任何幫助將不勝感激!
我嘗試了一下,它修改了XML標記內的內容:
message.replaceAll("(<MessageRef>)[^&]*(</MessageRef>)", "<MessageRef>" + String.valueOf(System.currentTimeMillis()) + "</MessageRef>");
輸出:
<MessageRef>1435744441381</MessageRef>
正則表達式不是解析XML的最佳工具 。 請改用解析器。 我喜歡使用Jsoup來簡化操作(它的主要目的是成為HTML解析器,因此它支持CSS查詢)。
這是代碼示例
String text = "<MessageRef>Trading01</MessageRef>";
Document doc = Jsoup.parse(text, "", Parser.xmlParser());
System.out.println(doc);
System.out.println("---------");
Elements elements = doc.select("MessageRef");// cssQuery
for (Element el : elements) {//for each tag named MessageRef
//set its text value to:
el.text("date = " + new Date());
}
String replaced = doc.toString();
System.out.println(replaced);
輸出:
<messageref>
Trading01
</messageref>
---------
<messageref>
now = Wed Jul 01 12:03:52 CEST 2015
</messageref>
如果您想避免美化您的文本以匹配XML標准(例如添加新行),請使用
doc.outputSettings().prettyPrint(false);
你會得到
<messageref>Trading01</messageref>
---------
<messageref>date = Wed Jul 01 12:07:42 CEST 2015</messageref>
您也可以通過以下方式進行操作:
正則表達式: <MessageRef>(.*?)</MessageRef>
例:
System.out.println(message.replaceAll("<MessageRef>(.*?)</MessageRef>", "<MessageRef>" + String.valueOf(System.currentTimeMillis() + "</MessageRef>")));
也可以完成以下操作
public static void main(String[] args) {
String input="<MessageRef>Trading01</MessageRef>";
System.out.println(input.substring(0,input.indexOf(">", 0)+1)+System.currentTimeMillis()+input.substring(input.indexOf("<",1),input.length()));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.