regex 删除不同参数之间的字符

mzillmmw  于 2023-06-30  发布在  其他
关注(0)|答案(3)|浏览(85)

我有一串不同的邮件
例如:“email1@uy.com,email2@iu.it,email3@uu.edu”等
我想制定一个Regex,它创建以下输出
例如:“email 1、email 2、email 3”等
如何在C#中删除“@”和“,”之间的字符,但保留“,”和空格
非常感谢你的帮助!!

5vf7fwbs

5vf7fwbs1#

如果你想用空格替换@和逗号之间的所有字符,最简单的选择是使用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"

请注意,它在结果中的逗号后面留下了空格,正如您在问题中所希望的那样,尽管您的示例结果删除了空格。
正则表达式查找以“@”字符开头,后跟任何非逗号字符的所有子字符串。这些子字符串被替换为空字符串。

kgsdhlau

kgsdhlau2#

将所有出现的@[^,]+替换为空字符串即可完成此工作。
该表达式匹配以@开头的序列(包括@@),直到逗号或结尾(不包括@@)。因此,原始电子邮件字符串中的逗号将被保留。
Demo.

wpcxdonn

wpcxdonn3#

也许你不需要使用正则表达式,在这种情况下,你可以这样做:

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);

相关问题