假设我有一个字符串,输入字符串的不同版本:
a) Name='book' Number='345' Version='12' Author='name1'
b) Name='book' Version='12' Author='name1' Number='345'我需要从该输入字符串中删除Version='xx' and Number='xx'。此参数的值始终可以更改。
做这件事最好的方法是什么?我尝试过regex,类似于:
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'那么如何制定一个通用的方法呢?
发布于 2018-09-21 23:44:19
您可以使用正则表达式替换:
"Name='book' Number='345' Version='12' Author='name1'"
.replaceAll("( Number| Version)='\\d+'", "")这将返回Name='book' Author='name1'
replaceAll("( Number| Version)='\\d+'", "")查找Number或Version,后跟单引号中的数字,并将其替换为空字符串。
正如下面的Aaron's comment所建议的,如果键/值对的顺序可以改变,那么不同的正则表达式可能更好:
s.replaceAll("(?:^| )(?:Number|Version)='\\d+'", "").trim()无论键之前是空格还是在行的开头,这都将与键匹配。
发布于 2018-09-21 23:51:48
使用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'https://stackoverflow.com/questions/52447078
复制相似问题