簡體   English   中英

替換可以使用正則表達式在字符串中更改的參數

[英]Replace parameters that can be changed in string using regex

假設我有一個字符串,輸入字符串的版本不同:

a) Name='book' Number='345' Version='12' Author='name1'
b) Name='book' Version='12' Author='name1' Number='345'

我需要從此輸入字符串中刪除Version='xx' and Number='xx' 此參數的值可以隨時更改。

最好的方法是什么? 我嘗試了正則表達式,類似:

String input = input.substring(0, input.indexOf("Number")) + "" + input.substring(input.indexOf("Version"));

但這僅在這種情況下有效:

a) Name='book' Number='345' Version='12' Author='name1'

但這不是:

b) Name='book' Version='12' Author='name1' Number='345'

那么如何制定一個通用的方法呢?

您可以使用正則表達式替換:

"Name='book' Number='345' Version='12' Author='name1'"
    .replaceAll("( Number| Version)='\\d+'", "")

返回Name='book' Author='name1'

replaceAll("( Number| Version)='\\\\d+'", "")查找Number OR Version后跟單引號中的數字,並將其替換為空白字符串。

正如下面Aaron的評論所建議那樣,如果鍵/值對的順序可以更改,則使用不同的正則表達式可能會更好:

s.replaceAll("(?:^| )(?:Number|Version)='\\d+'", "").trim()

這將與鍵匹配,無論鍵之前是空格還是在行的開頭。

您可以使用replaceAll方法實現正則表達式的目標,如下所示:

    String input = "Name='book' Number='345' Version='12' Author='name1'";
    String input2 = "Name='book' Version='345' Number='12' Author='name1'";

    input = input.replaceAll("(Number|Version)='\\d+'", "");
    input2 = input2.replaceAll("(Number|Version)='\\d+'", "");

    System.out.println(input);
    System.out.println(input2);

輸出是:

Name='book'   Author='name1'
Name='book'   Author='name1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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