优雅的字符串分裂

gre*_*ade 4 c# string

我正在寻找一种更好的方法来完成以下代码块,它是EmailAddress类/对象的一部分.根据我的想法,零件阵列很笨重,我想知道是否没有一个使用元组或Linq的衬垫可以整理一下.

另外,对于电子邮件地址的第一部分,什么是比"别名"更好的属性名称?

public string Alias { get; private set; }
public string Domain { get; private set; }
private void Split(string emailAddress)
{
    var parts = emailAddress.Split(new[] { '@' });
    Alias = parts[0];
    Domain = parts[1];
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

好吧,如果你利用参数数组,它就不那么笨重了:

var parts = emailAddress.Split('@');
Run Code Online (Sandbox Code Playgroud)

或者(为了避免每次都创建一个新数组),您可以重用现有数组:

private static readonly char[] EmailSplitter = new char[] {'@'};
...
var parts = emailAddress.Split(EmailSplitter);
Run Code Online (Sandbox Code Playgroud)

除此之外,我没有看到它特别笨重 - 尽管如果这就是EmailAddress类所做的,我会在构造函数(或静态方法)中执行此操作并使对象不可变.

您可能希望使用"localpart"而不是"别名" - 这将与RFC-822保持一致.