Разделение строки по двум критериям
У меня есть строка, как указано ниже.
string sample = "class0 .calss1 .class2 .class3.class4 .class5 class6 .class7";
Мне нужно создать список слов из этой строки образца.
WORD - это строка, которая начинается с точки и заканчивается на:
пространство илидругой период иликонец строкиЗапись: Ключевой момент здесь - разделение основано на двух критериях - период и пробел
У меня есть следующая программа. Работает нормально. Однако существует ли более простой / более эффективный / лаконичный подход с использованиемLINQ
или жеRegular Expressions
?
КОД
List<string> wordsCollection = new List<string>();
string sample = " class0 .calss1 .class2 .class3.class4 .class5 class6 .class7";
string word = null;
int stringLength = sample.Length;
int currentCount = 0;
if (stringLength > 0)
{
foreach (Char c in sample)
{
currentCount++;
if (String.IsNullOrEmpty(word))
{
if (c == '.')
{
word = Convert.ToString(c);
}
}
else
{
if (c == ' ')
{
//End Criteria Reached
word = word + Convert.ToString(c);
wordsCollection.Add(word);
word = String.Empty;
}
else if (c == '.')
{
//End Criteria Reached
wordsCollection.Add(word);
word = Convert.ToString(c);
}
else
{
word = word + Convert.ToString(c);
if (stringLength == currentCount)
{
wordsCollection.Add(word);
}
}
}
}
}
РЕЗУЛЬТАТ
foreach (string wordItem in wordsCollection)
{
Console.WriteLine(wordItem);
}
Ссылка:
Разделение строки на основе предикатаЕсть ли лучший способ получить подпоследовательности, где каждый элемент соответствует предикату?Основанный на Linq альтернативный предикат <T>?