输入字符串有多个空格,结果只剩下一个空格,其他空格必须用string替换.Empty
输入字符串:+1 580 5691 234
或(435) 772-5992
输出字符串:+1 5805691234
或+1 4357725992
Regex.Replace(text, @"[^\d]", string.Empty)
替换所有空格。
答案 0 :(得分:0)
您不必在一行内完成所有操作:
根据需要删除特殊字符,获取第一个空格的位置,仅在第一个空格后的子字符串中使用正则表达式删除空格。
答案 1 :(得分:0)
如果您绝对必须使用单个正则表达式执行此操作,这可能是您的解决方案:
替换
^(?:\+1)?\D*(\d*)?\D*(\d*)?\D*(\d*)?\D*(\d*)?\D*(\d*)?$
与
+1 $1$2$3$4$5
使用5个单独的捕获组,它会捕获仅数字,可能由非数字分隔。如果少于5个数字组,则忽略它们。
请注意,可选的前一个国家/地区代码也不会被捕获,并且替换字符串始终会插入它(如果存在则返回)。
此特定示例将数字组的数量限制为5,但可以轻松扩展。
答案 2 :(得分:0)
.NET Regex引擎可以通过lookbehind管理它:
(?<=\s+.*)\s+
它匹配所有空格块,前面至少有一个空格块,后跟一些非空白字符。
在字符串Regex.Replace(text, "(?<=\s+.*)\s+", string.Empty)
上将其用作+1 580 5691 234
会生成输出+1 5805691234
。