如何使用C#中的正则表达式将文本中的名称替换为电子邮件地址?

时间:2013-03-25 09:49:47

标签: c# .net regex

如何在段落中替换电子邮件地址,假设它现在是一个字符串,带有名字? 例如xx@yahoo.com.my = xx,.com,.ae

输入=“联系abc@yahoo.com或defg@hotmail.eu了解更多详情”

输出=“联系Abc或Defg了解更多详情”

4 个答案:

答案 0 :(得分:2)

既然你要求正则表达式,我会给你一个。

Regex regex = new Regex(@"(\.|[a-z]|[A-Z]|[0-9])*@(\.|[a-z]|[A-Z]|[0-9])*");
foreach (Match match in regex.Matches(inputString))
{
    // match.Value == "xx@yahoo.com.my"
    string name = match.Groups[1]; // "xx"
    string domain = match.Groups[2]; // "yahoo.com.my"
}

答案 1 :(得分:1)

int end = myString.IndexOf('@');

string name=myString.Substring(0, end);

试试这样。

您可以在这里参考子串函数>>

http://www.dotnetperls.com/substring

答案 2 :(得分:0)

Sting input = "contact abc@yahoo.com or defg@hotmail.eu for more details";
String pattern = @"(\S*)@\S*\.\S*";
String result = Regex.Replace(input , pattern , "$1");

答案 3 :(得分:0)

public static string ReplaceEmail(string emailBody) {
        string scrubbedemailBody = emailBody;
        Regex regex = new Regex(@"(\.|[a-z]|[A-Z]|[0-9])*@(\.|[a-z]|[A-Z]|[0-9])*");
        scrubbedemailBody = regex.Replace(scrubbedemailBody, match => {
            return new string(' ', match.Length);
        });
        return scrubbedemailBody;
    }