正则表达式和&符号的麻烦

时间:2010-04-23 17:37:38

标签: c# asp.net expression

我在使用正则表达式(C#,ASP.NET)方面遇到了一些麻烦,而且我很确定我在做一些根本错误的事情。我的任务是将动态创建的gridview绑定到数据源,然后遍历网格中的列,查找字符串“A& I”。单元格(模板列)中的数据的示例如下:

Name: John Doe
Phone: 555-123-1234
Email: john.doe@url.com
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” “[A] [&安培;] [I]”

但是当我严格使用“&”时,该行确实变为红色。有什么建议?

谢谢,Dan

2 个答案:

答案 0 :(得分:4)

正则表达式看起来很好。我怀疑文本可能编码如下:

A&I

输入。

您也可以执行gvrow.Cells[6].Text.Contains("A&I")而不是正则表达式。或gvrow.Cells[6].Text.Contains("A&I")如果我对编码问题是对的。

string.Contains也比Regex快。

在检查A& I的出现之前,您还可以HttpUtility.HtmlDecode查看该文字。

答案 1 :(得分: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

也许问题出在其他地方(可能是错误的Cell索引)?