Это пример того, что мне нужно выполнить как часть более крупной программы. Пример содержит два списка. listViewInput содержит три элемента текста: «банан», «банановое дерево» и «банановая кожура».Соответствует всем строкам
Мне нужно перебирать элементы listView и находить элемент, текст которого полностью содержится в строке textToCompare. textToCompare всегда будет иметь дополнительный текст на одной или обеих сторонах фактической строки, которую я ищу (не будет символом ==).
Проблема с этим сравнением заключается в том, что оператор If будет возвращать true для элемента listView «banana», а также «бананового дерева». Это кажется достаточно простым, но я пробовал все, что мог придумать, и мне не повезло. Любая помощь будет оценена по достоинству.
string textToCompare = "word banana tree more words";
for (int i = 0; i < listViewInput.Items.Count; i++)
{
if (Regex.IsMatch(textToCompare, listViewInput.Items[i].Text))
{
listViewOutput.Items.Add(listViewInput.Items[i].Text);
}
}
Каков ваш ожидаемый результат? На самом деле «banana» и «банановое дерево» являются «содержащимися в тексте» в textToCompare. – EricSchaefer
начните сравнивать с самыми длинными элементами списка. то вы можете достичь своего результата – Haji
@ EricSchaefer Это правда, что оба они полностью содержатся; Я попытаюсь объяснить более четко. Мой ожидаемый результат - «получить/найти» элемент списка, указав его текст, содержащийся в textToCompare. Пример: если textToCompare содержит «банановое дерево», я хочу только элемент listview, текст которого «банановое дерево». Если textToCompare содержит только «бананы», мне нужен только элемент listview, текст == «banana» и т. Д. Элементы listview являются известными и постоянными значениями, но строка может содержать другие слова до и после текста, который я ищу , – code2control