代码之家  ›  专栏  ›  技术社区  ›  MicMit

正则表达式.Net替换字符串开头后跟空格的单个字符

  •  2
  • MicMit  · 技术社区  · 14 年前


    单个字符的数量可能会有所不同。

    2 回复  |  直到 14 年前
        1
  •  5
  •   Kobi    14 年前

    你可以通过滥用lookahed:

    Regex.Replace(str, @"(?<=^\w?(\s\w)*)\s(?=\w\s)", "_");
    

    另一个选项是使用MatchEvaluator:

    Regex.Replace(str, @"^(\w )+",
                  match => match.Value.TrimEnd().Replace(' ', '_') + " ");
    

    在这个版本中,正则表达式很简单,但是我们做了一些后处理——函数删除最后一个空格,并用下划线替换所有其他空格。

        2
  •  5
  •   Alex Martelli    14 年前
    Regex.Replace(yourstring, "^x y z ", "x_y_z ")
    

    当然会的。你想概括多少取决于你想替换的“符号后跟空格”(假设你不想替换) word1 稍后在示例字符串中);例如,如果要在字符串的开头恰好替换三个单字符标识符(后跟空格),则正确的泛化方法是:

    Regex.Replace(yourstring, "^([a-z]) ([a-z]) ([a-z]) ", "$1_$2_$3 ")
    

    但是如果你想替换不同数量的标识符,或者不同长度的标识符等等,那就不一样了。告诉我们你到底想替换什么(以及你想在哪里停止替换),我们的建议可以更具体一些。