从字符串regex java中删除字符

时间:2014-09-08 08:39:04

标签: java regex

大家好,我开始学习正则表达式,我想从字符串中替换一些字符。

这是我的测试用例:

示例字符串:

+52 924 340 2304

预期输出:

09243402304

这是我尝试过的:

String number = cursor.getString(col_number).replace("\\d{2}", "");

但我似乎无法得到我预期的输出。有帮助吗?我很乐意感谢你的帮助。感谢。

更新

另外,我想删除字符串中的所有空白字符,如果字符串中包含其他字符,我忘了添加,( - ), -

6 个答案:

答案 0 :(得分:1)

你的方法:

.replace("\\d{2}", "");

将无法正常工作,因为在Java中String#replace 不会使用正则表达式。试试String#replaceAllString#replaceFirst

您可以使用:

String number = cursor.getString(col_number).replace(" ", "").replaceFirst("\\+\\d{2}", "0");

答案 1 :(得分:1)

使用它:

.replaceAll("^[^\\s]+|\\s", "")

演示:http://regex101.com/r/uY9xB2/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

这适用于所有情况