1

我希望能够在字符串中找到并突出显示一个字符串,但我不想删除空格。

所以如果我的原始字符串是:

有12只猴子

我想找到'12 mon ' 并突出显示以以下结尾的字符:

有< font color='red' >12 mon</font >键

但是,如果我搜索“ 12mon ”,我也想要相同的结果(这次没有空格)

这真的让我心烦意乱!我确信它可以用正则表达式完成。

4

4 回答 4

3

用于*指定空格是可选的并使用类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
于 2010-03-30T09:46:49.207 回答
1

你可以正则表达式 1\s?2\s?m\s?o\s?n\s?

您需要编写一个函数来生成正则表达式,但这应该不会太难。请注意,当我创建正则表达式时,我没有使用包含实际空间...

于 2010-03-30T09:29:32.547 回答
0

康斯坦丁的回答没有考虑空间是否在其他地方。因此,我会采用用户想要搜索的输入并在每个位置插入“\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
于 2010-04-07T07:30:08.110 回答
0

它足够快,这更整洁:只需搜索原始字符串和这个字符串:

originalString.ToCharArray().Where(c => !Char.IsWhiteSpace(c));

我想大部分处理时间都将花费在重新构建您的 HTML 字符串上,因此解析为 char 数组的成本不应该是一个主要问题。

于 2010-03-30T09:32:05.993 回答