Разделить на период игнорировать несколько случаев - PullRequest
0 голосов
/ 08 мая 2019

Я разделяю строку с точкой и пробелом ("."), Я хочу разделить с помощью ".", Но игнорирую, если она соответствует нескольким шаблонам, таким как MR. JR. , [одна буква]. Доктор Список шаблонов является статическим (без учета регистра)

Примеры:

1) Меня зовут MR. Азбука и работает на XYZ.

Вывод: без разделения. Всего одна строка

2) Меня зовут мистер ABC. Я работаю на XYZ.

Вывод: string [0] = Меня зовут Мистер ABC. строка [1] = я работаю на XYZ.

3) Меня зовут ABC. Я работаю на XYZ.

Вывод: string [0] = Меня зовут ABC. строка [1] = я работаю на XYZ.

4) Меня зовут М.Р. ABC Jr. DEF. Я работаю на XYZ.

Вывод: string [0] = Меня зовут MR. ABC Jr. DEF. (MR. И младший игнорируют дела) строка [1] = я работаю на XYZ.

1 Ответ

1 голос
/ 09 мая 2019

Используя шаблон регулярных выражений sln, мы представляем макет того, как он должен работать

                    List<string> ignores = new List<string>(){ "MR", "MS", "MRS", "DR", "PROF" };

        ignores = ignores.Select(x => @"\b" + x).ToList();

        string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

        foreach (char letter in alphabet.ToCharArray())
        {
            ignores.Add(@"\b" + letter);
        }

        string test = "This is a test for Prof. Plum. Here is a test for Ms. White. This is A. Test. Welcome to GMR. Next Line.";

        string regexPattern = $@"(?<!{string.Join("|", ignores)})\.\s";

        string[] results = Regex.Split(test, regexPattern, RegexOptions.IgnoreCase);

Результатами являются 3 предложения (хотя вам нужно повторно добавить. В конце всех, кроме последнего значения)

Отредактировано для добавления всех игнорируемых одиночных символов

Отредактировано для учета только целых слов в списке игнорирования

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