Существует множество вопросов по этому вопросу, но никто не решает мою проблему. У меня база данных SQL-сервера как источник данных, текстовое поле ввода и кнопка поиска. Когда текст введен и кнопка поиска нажата, отображается выпадающий список строк, содержащих искомый текст. Пользователь выбирает строку, на которую они хотят посмотреть, и эта информация отображается в виде сетки. (1 строка вернулась)C# .Regex.replace ignore case не работает
Я хочу, чтобы искомый текст был выделен. Это то, что у меня есть, и она должна работать, но я не могу понять, почему он не делает:
foreach (GridViewRow row in searchTextGridView2.Rows)
{
string text = searchText_txt.Text; //Text that was entered in the search text field
int length = searchTextGridView2.Columns.Count; //Number of Columns on the grid
for (int i = 0; i < length; i++) //loop through each column
{
string newText = row.Cells[i].Text.ToString(); //Get the text in the cell
if (newText.Contains(text)) //If the cell text contains the search text then do this
{
string highlight = "<span style='background-color:yellow'>" + text + "</span>";
string replacedText = Regex.Replace(newText, text, highlight, RegexOptions.IgnoreCase);
row.Cells[i].Text = replacedText;
}
}
}
Вышеприведенный код находится внутри события для выпадающего списка выбранный элемент изменен. Если я искал «претензии», он выделит все экземпляры этого слова, но если бы я искал «Претензии», он выделяет только слова со значением «C». Любая помощь оценивается
I 'd хотел бы отметить, что даже после исправления проблемы с '' Содержаниями', код будет по-прежнему (1) заменять экземпляры 'x' на' X', если вы ищете 'X', и (2) замените все с '.', если вы ch для '.'. – Rawling
Да, просто наткнулся на это сейчас. Я думаю, что мне нужно будет получить длину элемента поиска, найти индекс в ячейке, а затем использовать эти переменные, чтобы скопировать текст, который был найден в ячейке, в новую переменную, чтобы поддерживать этот случай. –
Для (1), если вы переключаете '' "+ text +" "' to '" $ 0 "', '' $ 0' говорит регулярному выражению использовать текст, который он сопоставил при замене. Для (2) вы можете использовать 'Regex.Escape1 на входе. – Rawling