C # разбить строку, но сохранить разделители - PullRequest
3 голосов
/ 11 апреля 2011

Подобные вопросы уже существуют, но все они используют регулярное выражение.Код, который я использую (который удаляет разделители):

string[] sentences = s.Split(new string[] { ". ", "? ", "! ", "... " }, StringSplitOptions.None);

Я хотел бы разбить блок текста на разрывы предложений и оставить терминаторы предложений.Я хотел бы избежать использования регулярных выражений для повышения производительности.Возможно ли это?

1 Ответ

6 голосов
/ 11 апреля 2011

Я не верю, что существует существующая функция, которая делает это. Однако вы можете использовать следующий метод расширения.

public static IEnumerable<string> SplitAndKeepSeparators(this string source, string[] separators) {
  var builder = new Text.StringBuilder();
  foreach (var cur in source) {
    builder.Append(cur);
    if (separators.Contains(cur)) {
      yield return builder.ToString();
      builder.Length = 0;
    }
  }
  if (builder.Length > 0) {
    yield return builder.ToString();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...