我需要用“x_y_z word1 word2”替换“x y z word1 word2”
单个字符的数量可能会有所不同。
请您参考如下方法:
您可以通过滥用 lookahed 来实现:
Regex.Replace(str, @"(?<=^\w?(\s\w)*)\s(?=\w\s)", "_");
查找一系列空格和单个字母之后以及另一个此类字母之前的空格。请注意,这不适用于所有 Regex 风格,但 .net 可以很好地处理它。
另一种选择是使用 MatchEvaluator:
Regex.Replace(str, @"^(\w )+",
match => match.Value.TrimEnd().Replace(' ', '_') + " ");
在此版本中,正则表达式很简单,但我们进行了一些后处理 - 该函数删除了最后一个空格,并将所有其他空格替换为下划线。