Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-即使字符串跨越空白,如何在字符串中查找字符串?_C#_Regex_String_Replace_Highlight - Fatal编程技术网

C#-即使字符串跨越空白,如何在字符串中查找字符串?

C#-即使字符串跨越空白,如何在字符串中查找字符串?,c#,regex,string,replace,highlight,C#,Regex,String,Replace,Highlight,我希望能够找到并突出显示字符串中的字符串,但我不想删除空格 如果我的原始字符串是: 有12只猴子 我想找到“12个月”,并突出显示以以下内容结尾的字符: 有12个mon键 但是如果我搜索“12mon”,我也希望得到相同的结果(这次没有空格) 这真让我心烦意乱!我相信这可以用正则表达式来完成。你可以用正则表达式来表示1\s?2\s?m\s?o\s?n\s 您需要编写一个函数来生成正则表达式,但这应该不会太难。注意,我在创建regex时没有使用include实际空间…您可以为1\s?2\s?m\s?

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

如果我的原始字符串是:

有12只猴子

我想找到“12个月”,并突出显示以以下内容结尾的字符:

12个mon

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


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

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


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

您可以为1\s?2\s?m\s?o\s?n\s使用regex吗


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

它足够快,这要整洁得多:只需搜索原始字符串和此字符串:

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

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

它足够快,这要整洁得多:只需搜索原始字符串和此字符串:

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

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

使用
*
指定空格是可选的,并使用
Regex
类的
替换
方法:

var input = "There are 12 monkeys";

var result = Regex.Replace(input, @"12\s*mon", @"<font color='red'>$0</font>");
var input=“有12只猴子”;
var result=Regex.Replace(输入,@“12\s*mon”,@“$0”);
结果是:

There are <font color='red'>12 mon</font>keys
Ther<font color='red'>e are 1</font>2 monkeys
有12只猴子

使用
*
指定空格是可选的,并使用
Regex的
方法替换
类:

var input = "There are 12 monkeys";

var result = Regex.Replace(input, @"12\s*mon", @"<font color='red'>$0</font>");
var input=“有12只猴子”;
var result=Regex.Replace(输入,@“12\s*mon”,@“$0”);
结果是:

There are <font color='red'>12 mon</font>keys
Ther<font color='red'>e are 1</font>2 monkeys
有12只猴子

Konstantin的答案无法解释空间是否在其他地方。因此,我将采用用户想要搜索的输入,并在每个位置插入“\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>");
var searchTerm=“eare1”;
var input=“有12只猴子”;
var result=Regex.Replace(输入,@“e\s*a\s*r\s*e\s*1,@“$0”);
结果是:

There are <font color='red'>12 mon</font>keys
Ther<font color='red'>e are 1</font>2 monkeys
有12只猴子

Konstantin的回答不考虑空间是否在其他地方。因此,我将采用用户想要搜索的输入,并在每个位置插入“\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>");
var searchTerm=“eare1”;
var input=“有12只猴子”;
var result=Regex.Replace(输入,@“e\s*a\s*r\s*e\s*1,@“$0”);
结果是:

There are <font color='red'>12 mon</font>keys
Ther<font color='red'>e are 1</font>2 monkeys
有12只猴子

正则表达式如何知道在“2”和“m”之间插入空格?它不能同时搜索“12个月”、“12个月”和“12个月n”吗?正则表达式如何知道在“2”和“m”之间插入空格?它不能同时搜索“12个月”、“12个月”和“12个月n”吗?但也许你需要“*”量词而不是“?”来解释多个空格。这就是为什么我说“可能”,但我应该明确地提到。但也许你需要用“*”量词而不是“?”来解释多个空格。这就是为什么我说“可能”,但我应该明确地提到它。+1。但是为什么不能用这个方法代替newString=originalString.Replace(“,”)+1.但是为什么不能用这个方法代替newString=originalString.Replace(“,”);我删除了我的回应,以支持这一点,这基本上是相同的答案。重复回答没有意义。我删除了我的回答,以支持基本相同的回答。重复回答没有意义。