簡體   English   中英

Java正則表達式刪除字符串中間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM