繁体   English   中英

使用C#中的Regex替换字符串中所有出现的空格,除了第一次出现的空格

[英]Replace all occurrences of a white space from string except the first occurrence using Regex in C#

输入字符串具有多个空格,结果应只剩下一个空格,其他空格必须替换为string.Empty

输入字符串: +1 580 5691 234(435) 772-5992

输出字符串: +1 5805691234+1 4357725992

Regex.Replace(text, @"[^\\d]", string.Empty)替换所有空白。

您不必在一行内完成所有操作:

根据需要删除特殊字符,获取第一个空格的位置,仅在第一个空格之后的子字符串中使用正则表达式删除空格。

如果您绝对必须使用单个正则表达式执行此操作,则这可能是您的解决方案:

更换

^(?:\+1)?\D*(\d*)?\D*(\d*)?\D*(\d*)?\D*(\d*)?\D*(\d*)?$

+1 $1$2$3$4$5

使用5个单独的捕获组,它捕获数字,可能用非数字分隔。 如果少于5位数字组,则将其忽略。

请注意, 也不会捕获可选的先前国家(地区)代码,并且替换字符串始终会插入该代码(如果存在则返回)。

此特定示例将数字组的数量限制为5,但是可以轻松扩展。

在regexstorm.net上

并在regex101上进行了说明

.NET Regex引擎可以通过以下方式进行管理:

(?<=\s+.*)\s+

它与所有空白块匹配,所有空白块之前至少有一个空白块,然后是一些非空白字符。

将其用作字符串+1 580 5691 234上的Regex.Replace(text, "(?<=\\s+.*)\\s+", string.Empty)产生输出+1 5805691234

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM