По умолчанию я бы достиг String.Split
, если у вас нет сложных требований, которые регулярное выражение позволит вам перемещаться. Конечно, как уже упоминалось, профилируйте его для своих нужд. Обязательно профилируйте с RegexOptions.Compiled
и без него и поймите, как это работает. Посмотрите на Компилировать или не компилировать , Как работает RegexOptions.Compiled? и найдите другие статьи по этой теме.
Одним из преимуществ String.Split
является его StringSplitOptions.RemoveEmptyEntries
, который удаляет пустые результаты для случаев, когда между разделителями нет данных. Шаблон регулярного выражения той же строки / символа с разделением будет иметь избыточные пустые записи. Это незначительно и может быть обработано простым запросом LINQ для фильтрации String.Empty
результатов.
Тем не менее, регулярное выражение делает чрезвычайно простым включение разделителя, если у вас есть для этого необходимость. Это достигается добавлением круглых скобок ()
вокруг шаблона, чтобы сделать его группой захвата. Например:
string input = "a|b|c|d|e|f";
foreach (var s in Regex.Split(input, @"\|"))
Console.WriteLine(s);
Console.WriteLine("Include delimiter...");
// notice () around pattern
foreach (var s in Regex.Split(input, @"(\|)"))
Console.WriteLine(s);
Вам также может пригодиться этот вопрос: Как разделить строку на строки и включить разделители с помощью .NET?