将字符串解析为两部分(如电子邮件地址)C#

本文关键字:电子邮件地址 两部分 字符串 | 更新日期: 2023-09-27 18:19:56

如何将类似Name@yahoo.com的字符串解析为的消息框

Name: Name
Doman: yahoo.com

(没有@符号)

我知道如何设置消息框等等,但我很难弄清楚如何将电子邮件字符串拆分为两个单独的字符串,并在此过程中删除@符号。

编辑:如果字符串是由用户在文本框中定义的,如何拆分?

如:

 string email = "";

将字符串解析为两部分(如电子邮件地址)C#

使用邮件地址类

MailAddress addr = new MailAddress("Name@yahoo.com");
string name= addr.User;
string domain = addr.Host;

使用String.Split:拆分字符串

string source = "Name@yahoo.com";
var parts = source.Split('@');
var name = parts[0];
var domain = parts[1];

使用字符串拆分

var strings = yourFullString.Split('@');
var name = strings[0];
var domain = strings[1];

您可以使用String.Split

string data = "Name@yahoo.com";
var stringArray = data.Split('@');
var name = stringArray[0];
var email = stringArray[1];

您也可以使用Regex.Split

string data = "Name@yahoo.com";
string pattern = "@";            // Split on @
string[] substrings = Regex.Split(data , pattern);
var name = substrings[0];
var email = substrings[1];

不使用单独的辅助变量的方法是:

var name = data.Substring(0, data.indexOf('@'));
var domain = data.Substring(data.indexOf('@') + 1);

使用.Net的内置类。这真的很容易,你不应该看到Regular expressionsString类的方法。原因

  • 没有确切的正则表达式可以解析任何电子邮件,因为有些电子邮件可能具有非常罕见的符号,如"'~!,*
  • 如果使用string类的方法,它可能会有很多不必要的代码

使用MailAddress类真的很容易:

System.Net.Mail.MailAddress mailAddress = new System.Net.Mail.MailAddress("BobValery@mail.com");
string address = mailAddress.Address;
string name = mailAddress.DisplayName;
string host = mailAddress.Host;
string user = mailAddress.User;