在razor MVC RSS中使用RegExp在搜索结果中区分大小写

时间:2017-11-23 10:17:32

标签: asp.net-mvc razor

您好我有以下代码来显示搜索结果。

@foreach (var str in (item.ContentText.Split(new char[] { '?', '<', '!', '<', '^', '>', '*', '>'}).Where(a => a.Contains((string)ViewData["searchTerm"]))))
{
                        @Html.Raw(Regex.Replace(str, (string)ViewData["searchTerm"],
 "<span style='background-color:rgb(245, 234, 157); color:rgb(243, 122, 122)'>" + (string)ViewData["searchTerm"] + "</span>"))
}
                    </a>

razor中是否有任何reg exp用于忽略区分大小写?

谢谢

2 个答案:

答案 0 :(得分:2)

您需要添加RegexOptions.IgnoreCase作为Regex.Replace重载的最后一个参数:

@foreach (var str in (item.ContentText.Split(new char[] { '?', '<', '!', '<', '^', '>', '*', '>'}).Where(a => a.Contains((string)ViewData["searchTerm"]))))
{
     @Html.Raw(Regex.Replace(str, (string)ViewData["searchTerm"],
               "<span style='background-color:rgb(245, 234, 157); color:rgb(243, 122, 122)'>" + (string)ViewData["searchTerm"] + "</span>",
               RegexOptions.IgnoreCase))
}

Regex.Replace的默认设置为RegexOptions.None,其中包含以下规则(重点区分大小写):

  
      
  • 该模式被解释为规范而非ECMAScript正则表达式。

  •   
  • 正则表达式模式在输入字符串中从左到右匹配。

  •   
  • 比较区分大小写。

  •   
  • ^$语言元素匹配输入字符串的开头和结尾。

  •   
  • .语言元素匹配除\n以外的所有字符。

  •   
  • 正则表达式模式中的任何空格都被解释为文字空格字符。

  •   
  • 将模式与输入字符串进行比较时,会使用当前文化的约定。

  •   
  • 在正则表达式模式中捕获组既是隐式的也是显式的。

  •   

注意: System.Text.RegularExpressions命名空间而非Razor引擎本身提供的所有正则表达式选项。

答案 1 :(得分:1)

使用@RegexOptions.IgnoreCase,我认为它将为您工作。