我有这个代码搜索列表并返回标题,如果它与搜索词匹配,但目前如果我尝试搜索“测试”,它不会返回结果。如列表所示,是否为“测试”。
请协助。
try
{
objCurrentWeb = SPContext.Current.Web;
objSSList = objCurrentWeb.Lists["Sales Materials"];
foreach (SPListItem objSSListItem in objSSList.Items)
{
if (Convert.ToString(objSSListItem["Title"]).Contains(searchWord))
{
resultLabel.Text = objSSListItem["Title"].ToString();
}
}
}
catch (Exception ex)
{
resultLabel.Text = ex.Message;
}
答案 0 :(得分:9)
您可以使用IndexOf
检查另一个字符串是否包含在另一个字符串中,然后您可以指定StringComparison
方法并告诉它忽略CaseSensitivity。
(Convert.ToString(objSSListItem["Title"])
.IndexOf(searchWord, StringComparison.InvariantCultureIgnoreCase)) >= 0
为了让它看起来更好更容易调用,请将其作为扩展方法
public static class StringExtender
{
public static bool Contains(this string s, string str, StringComparison comparer)
{
return s.IndexOf(str, comparer) >= 0;
}
}
答案 1 :(得分:4)
Convert.ToString(objSSListItem["Title"]).ToUpper().Contains(searchWord.ToUpper())
或
ToLower()
两者都有效。
答案 2 :(得分:3)
另一种选择是使用正则表达式
Regex pattern = new Regex("Arch",RegexOptions.IgnoreCase);
if (pattern.IsMatch("string to search"))
Console.WriteLine("Match found");
答案 3 :(得分:0)
if (Convert.ToString(objSSListItem["Title"]).Contains(searchWord, StringComparer.OrdinalIgnoreCase ))
尝试一下,它应该忽略这个案例
答案 4 :(得分:0)
您可以编写自己的比较器! (只需实现IComparer接口!)
更多方法吗?