Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
.net 如何用破折号替换特定角色的一个或多个实例?_.net_Regex_.net 4.0 - Fatal编程技术网

.net 如何用破折号替换特定角色的一个或多个实例?

.net 如何用破折号替换特定角色的一个或多个实例?,.net,regex,.net-4.0,.net,Regex,.net 4.0,我需要帮助编写一个正则表达式,该正则表达式能够检测字符串中定义的字符的一个或多个实例(在我的示例中是一个空格),并用一个破折号替换 我现在正在使用这个正则表达式,它替换字符串中一个或多个空空格的实例 Regex.Replace(inputString, @"\s+", "-"); 我希望采用类似的方法,但对于另一个角色示例: 或& 你知道怎么解决吗?谢谢您在这方面的时间。只需将\s更改为;或者&它应该可以工作。只需将\s更改为;或者&它应该会起作用 Regex.Replace(inputSt

我需要帮助编写一个正则表达式,该正则表达式能够检测字符串中定义的字符的一个或多个实例(在我的示例中是一个空格),并用一个破折号替换

我现在正在使用这个正则表达式,它替换字符串中一个或多个空空格的实例

Regex.Replace(inputString, @"\s+", "-"); 
我希望采用类似的方法,但对于另一个角色示例:
&


你知道怎么解决吗?谢谢您在这方面的时间。

只需将\s更改为;或者&它应该可以工作。

只需将\s更改为;或者&它应该会起作用

Regex.Replace(inputString, @"\s+|;+|&+", "-"); 
[;&]
是一个字符类,包含方括号内的字符。您可以在那里添加所有要替换的字符

如果要与工作解决方案结合使用,只需将
\s
添加到类中即可

Regex.Replace(inputString, @"[\s;&]+", "-");
[;&]
是一个字符类,包含方括号内的字符。您可以在那里添加所有要替换的字符

如果要与工作解决方案结合使用,只需将
\s
添加到类中即可

Regex.Replace(inputString, @"[\s;&]+", "-");


嗨,它是什么意思?|(就在+?@GibboK之后),这是表示匹配
\s+
的管道操作符+
&+
它是一个逻辑OR,就像C中的
|
一样。我选择了这种方法而不是stema的字符类方法,因为它允许您也替换一个或多个较长模式的实例,例如,
Regex.replace(inputString,@“\s++”(==)+”,“-”
将用一个破折号替换一个或多个空格,并用一个破折号替换一个或多个双方程符号,但它将保留一个方程符号。这是事实,如果要替换更长的模式,则需要or解决方案。好的,有效的(可扩展的)解决方案,所以+1只是最后一个问题,我如何替换角色“?您好,|(就在+之后)是什么意思?@GibboK,这是表示match
\s+
++
&+
的管道操作符,它是一个逻辑OR,就像C#中的
|
一样。我选择了这种方法而不是stema的字符类方法,因为它还允许您替换较长模式的一个或多个实例,例如
Regex.replace(inputString,@“\s+=”)+", "-");
将用一个破折号替换一个或多个空格,并用一个破折号替换一个或多个双方程符号,但它将保留一个方程符号。这是事实,如果要替换更长的模式,则需要or解决方案。好的,有效的(可扩展的)解决方案,所以+1只是最后一个问题,我该如何替换角色“?
regex
标记是识别关于正则表达式的问题所需的全部。标题中也不需要标记。
regex
标记是识别关于正则表达式的问题所需的全部。标题中也不需要标记。只需小心使用此解决方案,因为它将匹配混合字符串(
;&
)和统一字符串(
),而这可能不是您想要的。@Dan使用或类似于此的方法将模式组合在一起将完全替换相同的内容。只是匹配方式不同。
\s+|+|&+只匹配三个重复字符中的一个字符序列。检查最后一行:vs。如果您只是删除匹配的字符,是的,它们的工作原理相同,但在替换匹配字符时需要更加小心。@Dan现在我明白您的意思了。是的,你是对的,它会在这里产生不同数量的破折号,这取决于你想要的行为。现在还不清楚这是否是你想要的,只要你理解其中的细微差别,这是一个很好的解决方案。只需小心使用此解决方案,因为它将匹配混合字符串(
;&;
)和统一字符串(
),这可能不是您想要的。@Dan使用或类似于
@“\s+|+|和+”将模式组合在一起
将替换完全相同的内容。只是匹配方式不同。
\s++|+|&+
只匹配三个重复字符中的一个字符序列。检查最后一行:vs。如果只是删除匹配的字符,是的,它们的工作方式相同,但在替换匹配项时需要更加小心。@Dan现在我看到你的答案了重点。是的,你是对的。这将导致不同数量的破折号,所以这取决于你想要的行为。这是否是你想要的,还有点不清楚,只要你理解这一点差异,这是一个很好的解决方案。