Как разбить имеющуюся строку по точкам, но при этом затронуть не все точки?
Разделяю определённые строки на массив точкой, но столкнулся с тем, что в этой строке может быть такая запись: "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 шт):
Если нужно максимум два элемента при разделении, то можно использовать метод Split(string[] separator, int count, StringSplitOptions options):
string[] prepEmpQual = elementEmpQual.InnerText.Trim().Split(separator, 2, StringSplitOptions.RemoveEmptyEntries);
Добавьте
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+цифр.