我希望能够在字符串中找到并突出显示一个字符串,但我不想删除空格。
所以如果我的原始字符串是:
有12只猴子
我想找到'12 mon ' 并突出显示以以下结尾的字符:
有< font color='red' >12 mon</font >键
但是,如果我搜索“ 12mon ”,我也想要相同的结果(这次没有空格)
这真的让我心烦意乱!我确信它可以用正则表达式完成。
用于*
指定空格是可选的并使用类Replace
的方法Regex
:
var input = "There are 12 monkeys";
var result = Regex.Replace(input, @"12\s*mon", @"<font color='red'>$0</font>");
结果是:
There are <font color='red'>12 mon</font>keys
你可以正则表达式 1\s?2\s?m\s?o\s?n\s?
您需要编写一个函数来生成正则表达式,但这应该不会太难。请注意,当我创建正则表达式时,我没有使用包含实际空间...
康斯坦丁的回答没有考虑空间是否在其他地方。因此,我会采用用户想要搜索的输入并在每个位置插入“\w*”,这样就可以找到任何可能的搜索。
var searchTerm = "eare1";
var input = "There are 12 monkeys";
var result = Regex.Replace(input, @"e\s*a\s*r\s*e\s*1", @"<font color='red'>$0</font>");
结果是:
Ther<font color='red'>e are 1</font>2 monkeys
它足够快,这更整洁:只需搜索原始字符串和这个字符串:
originalString.ToCharArray().Where(c => !Char.IsWhiteSpace(c));
我想大部分处理时间都将花费在重新构建您的 HTML 字符串上,因此解析为 char 数组的成本不应该是一个主要问题。