элегантное расщепление строк - PullRequest
4 голосов
/ 14 января 2010

Я ищу более удобный способ выполнения следующего блока кода, который является частью класса / объекта EmailAddress. На мой взгляд, массив частей неуклюж, и мне интересно, если бы не было ни одного вкладыша, использующего кортежи или Linq, который бы немного его убрал.

Кроме того, что может быть лучшим именем свойства, чем "Alias" для первой части адреса электронной почты?

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 ]

5 голосов
/ 14 января 2010

Что ж, это менее неуклюже, если вы воспользуетесь массивом параметров:

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

Или (чтобы избежать создания нового массива каждый раз) вы можете повторно использовать существующий массив:

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

Кроме того, я не вижу, что это особенно неуклюже - хотя, если это все, что делает класс EmailAddress, я сделал бы это в конструкторе (или статическом методе) и сделал бы объект неизменным. 1008 *

Возможно, вы захотите использовать «localpart» вместо «alias» - это будет соответствовать RFC-822.

0 голосов
/ 14 января 2010

Я бы сказал, что все в порядке.

Другим способом было бы использование регулярного выражения, но вы не получили бы ничего, кроме возможности проверять формат одновременно с разделением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...