删除不同参数之间的字符

时间:2015-06-26 01:25:15

标签: c# regex

我有一串不同的电子邮件

  

ex:“email1 @ uy.com,email2 @ ui.it,email3 @ uu.edu”等等

我想制定一个创建以下输出的正则表达式

  

例如:“email1,email2,email3”等等

如何删除“@”和“,”之间的字符,但在C#中留下“,”和空格

非常感谢你的帮助!!

3 个答案:

答案 0 :(得分:0)

用空字符串替换所有出现的@[^,]+都可以完成这项任务。

该表达式匹配以@开头的序列,包括逗号或结尾,独占。因此,将保留原始电子邮件串中的逗号。

Demo.

答案 1 :(得分:0)

也许您不需要使用正则表达式,在这种情况下,您可以执行以下操作:

string input = "email1@uy.com, email2@iu.it, email3@uu.edu";

 input = input.Replace(" ", "");
 string[] ocurrences = input.Split(',');

 for (int i = 0; i < ocurrences.Length; i++)
 {
     string s = ocurrences[i];
     ocurrences[i] = s.Substring(0, s.IndexOf('@'));
 }

 string final = string.Join(", ", occurences);

答案 2 :(得分:0)

如果要将@和逗号之间的所有字符替换为空白,最简单的选项是使用Regex.Replace

var emails = "a@m.com, b@m.com, d@m.com";
var result = Regex.Replace(emails, "@[^,]+", string.Empty);
// result is "a, b, d"

请注意,它会在您的问题中以逗号后的结果留下空格,尽管您的示例结果已删除了空格。

正则表达式查找所有以'@'字符开头的子字符串,后跟任何不是逗号的字符。这些子串用空字符串替换。