c#字符串比较不起作用
本文关键字:不起作用 比较 字符串 | 更新日期: 2023-09-27 18:08:54
我对请求收到的字符串的字符串比较有一些问题。queryString和文件中的一行。resx.
代码将Request.queryString
接收到一个名为q
的变量,然后转到一个函数来比较一行中是否有q
值:
while ((line = filehtml.ReadLine()) != null)
{
if (line.ToLower().Contains(q.ToLower().ToString()))
HttpContext.Current.Response.Write("<b>Content found!</b>");
else
HttpContext.Current.Response.Write("<b>Content not found!</b>");
}
作为静态文件中的搜索,必须考虑特殊字符和搜索:Iberê
例如,不返回true,因为.Contains
, .IndexOf
或.LastindexOf
比较:iberê
,来自q
,与iberê
,来自行。
考虑到我已经尝试使用ResXResourceReader(它无法被Visual Studio找到),ResourceReader和ResourceManager(这些我无法通过要读取的路径设置静态文件)。
编辑:
问题解决了。有一个SpecialChars
实例,用EntitiesEncode
方法覆盖q
值
问题是ê
字符在两个字符串中都被转义了。所以如果你做了这样的事情,它将不起作用:
string line = "sample iberê text";
string q = "iberê";
if (line.Contains(q)) {
// do something
}
您需要对字符串进行解义。在System.Web
程序集中使用HttpUtility
。
line = System.Web.HttpUtility.HtmlDecode(line);
q = System.Web.HttpUtility.HtmlDecode(q);
if (line.Contains(q)) {
// do something
}
正如下面@r3bel所建议的,如果你使用。net 4或更高版本,你也可以使用System.Net.WebUtility.HtmlDecode
,所以你不需要额外的程序集引用。