сегодня я задавался вопросом, существует ли лучшее решение, выполняют следующий пример кода.
string keyword = " abc, foo , bar";
string match = "foo";
string[] split= keyword.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
foreach(string s in split)
{
if(s.Trim() == match){// asjdklasd; break;}
}
Существует ли способ выполнить обрезку (), вручную не выполняя итерации через каждый объект? Я ищу что-то как 'разделение следующими символами и автоматически обрезаю каждый результат'.
А-ч, immediatly прежде, чем отправить я нашел
List parts = line.Split(';').Select(p => p.Trim()).ToList();
в том, Как я могу разделить и обрезать строку в части все на одной строке?
Тем не менее мне любопытно: могло бы быть лучшее решение этого? (Или компилятор, вероятно, преобразовал бы их в тот же вывод кода как Linq-операция?)
Другой возможный вариант (который избегает LINQ, к лучшему или худшему):
string line = " abc, foo , bar";
string[] parts= Array.ConvertAll(line.Split(','), p => p.Trim());
Однако, если вам просто нужно знать, есть ли он - возможно, короткое замыкание?
bool contains = line.Split(',').Any(p => p.Trim() == match);
Если пробелы просто окружают слова в строке, разделенной запятыми, это сработает:
var keyword = " abc, foo , bar";
var array = keyword.Replace(" ", "").Split(',');
if (array.Contains("foo"))
{
Debug.Print("Match");
}
Попробуйте следующее:
string keyword = " abc, foo , bar";
string match = "foo";
string[] split = Regex.Split(keyword.Trim(), @"\s*[,;]\s*");
if (split.Contains(match))
{
// do stuff
}
Я бы предложил использовать регулярные выражения на исходной строке, ищу шаблон "любое количество пробелов, за которым следует один из ваших разделителей, а затем один или несколько пробелов" и удаляю эти пробелы. Затем разделите.
Вы найдете множество различных методов для этого, и изменение производительности и точности не будет легко заметить. Я бы порекомендовал подключить их все в тестовом комплекте типа NUnit, чтобы найти, какой из них выходит на вершину, а какой точный.
Используйте в циклах маленькие, средние и большие количества текста для изучения различных ситуаций.