Как разбить имеющуюся строку по точкам, но при этом затронуть не все точки?

Разделяю определённые строки на массив точкой, но столкнулся с тем, что в этой строке может быть такая запись: "190601.65 Автомобили и автомобильное хозяйство. 38.04.04. Государственное и муниципальное управление". Что я сделал:

string[] separator = new string[] { ". " };
string[] prepEmpQual = elementEmpQual.InnerText.Trim().Split(separator, StringSplitOptions.RemoveEmptyEntries);

В итоге получается массив с такими элементами:

190601.65 Автомобили и автомобильное хозяйство

38.04.04

Государственное и муниципальное управление

Последние два элемента не должны делиться, а быть одним (38.04.04. Государственное и муниципальное управление), как это возможно сделать?


Ответы (2 шт):

Автор решения: default locale

Если нужно максимум два элемента при разделении, то можно использовать метод Split(string[] separator, int count, StringSplitOptions options):

string[] prepEmpQual = elementEmpQual.InnerText.Trim().Split(separator, 2, StringSplitOptions.RemoveEmptyEntries);
→ Ссылка
Автор решения: Wiktor Stribiżew

Добавьте

using System.Text.RegularExpressions;

Затем можно использовать

var result = Regex.Split(str, @"(?<!\d\.\d+\.\d+)\.\s+");

Результат:

90601.65 Автомобили и автомобильное хозяйство
38.04.04. Государственное и муниципальное управление

Регулярное выражение (?<!\d\.\d+\.\d+)\.\s+ находит все вхождения точки (.) и следующих за ней одного и более пробельных символов (\s+), если сразу перед точкой нет цифры.1+цифр.1+цифр.

См. пример работы кода

→ Ссылка