优雅的字符串分裂

时间:2010-01-14 14:24:29

标签: 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];
}

2 个答案:

答案 0 :(得分:5)

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

var parts = emailAddress.Split('@');

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

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

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

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

答案 1 :(得分:0)

我会说没关系。

另一种方法是使用正则表达式,但除了能够在拆分格式的同时验证格式之外,你不会获得太多收益。