[英]Trouble with Regular Expression and Ampersand
我在使用正则表达式(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]”
但是当我严格使用“&”时,该行的确变为红色。 有什么建议么?
谢谢,丹
正则表达式对我来说很好。 我怀疑文字可能编码为:
A&I
在输入上。
您也可以执行gvrow.Cells[6].Text.Contains("A&I")
而不是正则表达式。 或gvrow.Cells[6].Text.Contains("A&I")
如果我对编码问题正确的话gvrow.Cells[6].Text.Contains("A&I")
。
string.Contains也比Regex快。
您还可以在检查A&I出现之前在文本上使用HttpUtility.HtmlDecode
。
两者都成功匹配:
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
也许问题出在其他地方(可能是错误的Cells索引)?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.