REGEX在逗号前添加字符串#

时间:2015-07-09 16:21:30

标签: c# asp.net

如何在逗号分隔的字符串上的每个逗号之前附加已知字符串。 是否有正则表达式或不使用循环的东西 EX

给出字符串:

email, email2, email3  (etc...)

string suffix = "@iou.com"
string desiredResult = "email@iou.com, email2@iou.com, email3@iou.com

谢谢!

4 个答案:

答案 0 :(得分:0)

您可以使用[^,\s]+ regexp,并替换为"$0"+suffix

var res = Regex.Replace(original, @"[^,\s]+", "$0"+suffix);

"$0"是指正则表达式捕获的内容。

Demo.

答案 1 :(得分:0)

你在这里:

string input = "email, email2, email3";
string suffix = "@iou.com";
//string desiredResult = "email@iou.com, email2@iou.com, email3@iou.com";
Console.WriteLine(Regex.Replace((input + ",")
    .Replace(",", suffix + ","), @",$", ""));

希望这有帮助。

答案 2 :(得分:0)

或使用LINQ:

Console.WriteLine(string.Join(",",input.Split(',').Select(s => string.Concat(s, suffix))));

答案 3 :(得分:0)

您可以使用零长度捕获组。这可能是这样的:

\w+(?<ReplaceMe>),?

\w匹配字母数字字符,名为“ReplaceMe”的命名捕获组匹配单词结尾与逗号开头(或任何其他非字母数字项目,包括任何其他非字母数字项目)之间的零长度空格字符串的结尾)。

然后你只需用附加的值替换ReplaceMe,如下所示:

Regex.Replace(original, @"\w+(?<ReplaceMe>),?", "@email.com");

这是正则表达式的an example