有条件地给以逗号分隔的字符串中的token添加前缀
本文关键字:字符串 添加 加前缀 token 分隔 有条件 | 更新日期: 2023-09-27 18:14:23
例91是印度的ISD代码,下面是逗号分隔的手机号码列表
9111111111, 1111111112, 1111111113, 911111111114, 911111111115
如果电话号码没有前缀91,最好的方法是什么?以下是预期输出
919111111111, 911111111112, 911111111113, 911111111114, 911111111115
总是可以通过检查和替换值来分割和循环,然后再连接它们。有没有更好的办法?
替换Position (Zero-Width)匹配
使用:
resultString = Regex.Replace(yourString, @"(?='b(?!91'd{10})'d{10}'b)", "91");
在中的regex演示中,请参见底部的替换。
正则表达式(?='b(?!91'd{10})'d{10}'b)
匹配我们应该插入91
的位置,不匹配任何字符。我们将位置匹配替换为91
。
前瞻(?='b(?!91'd{10})'d{10}'b)
断言后面是
-
'b
一个字边界(确保我们在中间字符串不匹配) -
(?!91'd{10})
后面不跟91
和十位数字(负抬头)和 -
'd{10}
十位
- 零长度断言的前向和后向
- 掌握向前看和向后看
这取决于你如何更好地定义,但你总是可以使用linq:
var numbers = input.Split(',').Select(x => x.StartsWith("91") ? x : "91" + x);
var result = string.Join(",", numbers);
既然你已经标记了这个正则表达式,这里是正则表达式的方式;
将'b('d{10})'b
替换为91$1
这将匹配并捕获一系列10位数字。91$1
替换字符串将以91
作为前缀。