2010-04-23 2 views
2

У меня проблемы с регулярным выражением (C#, ASP.NET), и я уверен, что делаю что-то принципиально неправильно. Моя задача - связать динамически созданный gridview с источником данных, а затем выполнить итерацию по столбцу в сетке, ища строку «A & I». Пример того, что данные в ячейке (в столбце шаблона) выглядит как это:Проблема с регулярным выражением и амперсандом

Name: John Doe 
Phone: 555-123-1234 
Email: [email protected] 
Dept: DHS-A&I-MRB 

Вот код, я использую, чтобы найти значение строки:

foreach(GridViewRow gvrow in gv.Rows) 
{ 
    Match m = Regex.Match(gvrow.Cells[6].Text,"A&I"); 

    if(m.Success) 
    { 
     gvrow.ForeColor = System.Drawing.Color.Red; 
    } 
} 

Я не имеющий любое везение с любым из этих вариантов: "А & я" "[A] [&] [I]"

Но когда я строго пользователь "&", строка делает краснеет. Какие-либо предложения?

Спасибо, Дэн

ответ

4

Regex отлично выглядит для меня. Я подозреваю, что текст может быть закодирован как:

A&I 

на входе.

Вы также можете сделать gvrow.Cells[6].Text.Contains("A&I") вместо регулярного выражения. Или gvrow.Cells[6].Text.Contains("A&I"), если я прав с проблемой кодирования.

string.Contains также быстрее, чем Regex.

Вы могли бы также HttpUtility.HtmlDecode на тексте до проверки на вхождение в А & И.

+0

Спасибо за предложение. Я использовал «A & I», и это сработало. Кроме того, BIG благодарит за предложение «содержит» - я не знал об этом, пока вы не сказали мне! –

1

Оба успешно этот матч:

Match m = Regex.Match("DHS-A&I-MRB", "A&I"); 
Match m0 = Regex.Match("DHS-A&I-MRB", @"A\&I"); 

Debug.WriteLine("m.Success = " + m.Success.ToString()); 
Debug.WriteLine("m0.Success = " + m0.Success.ToString()); 

Выход:

m.Success = True 
m0.Success = True 

Возможно, проблема в другом месте (возможно, неправильный индекс ячейки)?

+0

я использовал этот точный пример, и они испытанный верно. Однако при тестировании вывода gridview они потерпят неудачу. Я думаю, что проблема в кодировке - я только что протестировал «A & I», и это сработало. (Кстати, я был виноват в неправильном индексе столбца раньше ... поэтому я сделал чек в четыре раза перед публикацией здесь;) Спасибо за предложение.) –

Смежные вопросы