我在使用正则表达式(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
答案 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索引)?