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