Код: Выделить всё
First Last
Last, First
name@domain.com
Код: Выделить всё
First, Last , name@domain.com, First Last
Может ли кто-нибудь подсказать лучший способ сделать это?
Я попробовал разделить запятые, что сработало, за исключением второго примера, где фамилия ставится первой. Я полагаю, что этот метод может работать, если после разделения я проверю каждый элемент и посмотрю, содержит ли он '@' или '', если нет, то можно предположить, что следующий элемент - это имя. Это хороший способ подойти к этому? Я пропустил другой формат, в котором может быть адрес?
ОБНОВЛЕНИЕ: Возможно, мне следует немного уточнить, в основном все, что я Я хочу разбить строку, содержащую несколько адресов, на отдельные строки, содержащие адрес в любом формате, в котором он был отправлен. У меня есть свои собственные методы проверки и извлечения информации из адреса, мне было просто сложно понять нашел лучший способ разделить каждый адрес.
Вот решение, которое я придумал для этого:
Код: Выделить всё
String str = "Last, First , name@domain.com, First Last , \"First Last\" ";
List addresses = new List();
int atIdx = 0;
int commaIdx = 0;
int lastComma = 0;
for (int c = 0; c < str.Length; c++)
{
if (str[c] == '@')
atIdx = c;
if (str[c] == ',')
commaIdx = c;
if (commaIdx > atIdx && atIdx > 0)
{
string temp = str.Substring(lastComma, commaIdx - lastComma);
addresses.Add(temp);
lastComma = commaIdx;
atIdx = commaIdx;
}
if (c == str.Length -1)
{
string temp = str.Substring(lastComma, str.Legth - lastComma);
addresses.Add(temp);
}
}
if (commaIdx < 2)
{
// if we get here we can assume either there was no comma, or there was only one comma as part of the last, first combo
addresses.Add(str);
}
Подробнее здесь: https://stackoverflow.com/questions/451 ... -addresses