我有以下需要过滤的示例字符串
0173556677 (Alice), 017545454 (Bob)
这是将电话号码添加到文本视图的方式。我希望文本看起来像那样
0173556677;017545454
有没有办法使用正则表达式更改文本。这样的表达怎么样?或者你推荐其他方法吗?
答案 0 :(得分:4)
您可以执行以下操作:
String orig = "0173556677 (Alice), 017545454 (Bob)";
String regex = " \\(.+?\\)";
String res = orig.replaceAll(regex, "").replaceAll(",", ";");
// ^remove all content in parenthesis
// ^ replace comma with semicolon
答案 1 :(得分:1)
答案 2 :(得分:0)
这是一个可以指导您的资源:
http://www.zparacha.com/validate-email-ssn-phone-number-using-java-regular-expression/
答案 3 :(得分:0)
此解决方案适用于使用不包含数字的任何字符串分隔的电话号码:
String orig = "0173556677 (Alice), 017545454 (Bob)";
String[] numbers = orig.split("\\D+"); //split at everything that is not a digit
StringBuilder sb = new StringBuilder();
if (numbers.length > 0) {
sb.append(numbers[0]);
for (int i = 1; i < numbers.length; i++) { //concatenate all that is left
sb.append(";");
sb.append(numbers[i]);
}
}
String res = sb.toString();
或使用com.google.common.base.Joiner:
String[] numbers = orig.split("\\D+"); //split at everything that is not a digit
String res = Joiner.on(";").join(numbers);
PS。最佳投票示例中的要求略有偏差,但似乎我不能只添加一个字符(应该是replaceAll(", ", ";")
,在昏迷后有一个空格,或者\\s
)我做的不想弄乱别人的代码。