大家好,我开始学习正则表达式,我想从字符串中替换一些字符。
这是我的测试用例:
示例字符串:
+52 924 340 2304
预期输出:
09243402304
这是我尝试过的:
String number = cursor.getString(col_number).replace("\\d{2}", "");
但我似乎无法得到我预期的输出。有帮助吗?我很乐意感谢你的帮助。感谢。
更新
另外,我想删除字符串中的所有空白字符,如果字符串中包含其他字符,我忘了添加,( - ), -
答案 0 :(得分:1)
你的方法:
.replace("\\d{2}", "");
将无法正常工作,因为在Java中String#replace
不会使用正则表达式。试试String#replaceAll
或String#replaceFirst
您可以使用:
String number = cursor.getString(col_number).replace(" ", "").replaceFirst("\\+\\d{2}", "0");
答案 1 :(得分:1)
答案 2 :(得分:1)
String number = cursor.getString(col_number).replaceAll("^\\+\\d{2}", "0").replaceAll("[^\\d]", "")
答案 3 :(得分:0)
为什么不在空格中拆分String
。然后用0
替换第一个条目,并再次将数组部分连接到一个String
。完成。
答案 4 :(得分:0)
@anibhava已经提到了你的问题,我想建议另一个解决方案,你可以简单地删除空格并使用String#substring
剪切字符串:
number.replaceAll("\\s+", "").substring(3); //you might want to add the 0 using + operator
答案 5 :(得分:0)
^\+\d{2}[^\d]*(\d+)[^\d]*(\d+)[^\d]*(\d+)$
您可以使用此功能,然后使用
替换 0$1$2$3
参见演示。
http://regex101.com/r/iX5xR2/12
这适用于所有情况