如何使用正则表达式在字符之间插入空格

本文关键字:之间 插入 空格 字符 何使用 正则表达式 | 更新日期: 2023-09-27 18:34:57

尝试了解更多关于使用正则表达式(正则表达式(的信息。在 C# (VS 2010( 中使用 Microsoft 版本的正则表达式,我怎么能采用一个简单的字符串,例如:

"Hello"

并将其更改为

"H e l l o"
这可以是任何字母或符号、大写字母

、小写等的字符串,并且没有其他字母或符号跟随或引导该单词。(字符串仅包含一个单词(。

(我已经阅读了其他帖子,但我似乎无法掌握正则表达式。请善待:)(。

感谢您对此的任何帮助。(解释将是最有用的(。

如何使用正则表达式在字符之间插入空格

您只能通过正则表达式执行此操作,不需要内置的 c# 函数。使用以下正则表达式,然后将匹配的边界替换为空格。

(?<=.)(?!$)

演示

string result = Regex.Replace(yourString, @"(?<=.)(?!$)", " ");

解释:

  • (?<=.) 正面回头断言比赛之前必须有一个角色。
  • (?!$) 负前瞻,断言匹配后不会有行锚点的末尾。因此,所有字符旁边的边界将匹配,但与最后一个字符旁边的边界不匹配。

您也可以使用单词边界。

(?<!^)('B|b)(?!$)

演示

string result = Regex.Replace(yourString, @"(?<!^)('B|b)(?!$)", " ");

解释:

  • (?<!^) 负面的回头看,断言比赛不会在开始时进行。
  • ('B|'b) 匹配两个单词字符和两个非单词字符之间存在的边界('B(或匹配单词字符和非单词字符之间存在的边界('b(。
  • (?!$) 负前瞻断言匹配后不会有行锚点的末尾。
Regex.Replace("Hello", "(.)", "$1 ").TrimEnd();

解释

  • 点字符类匹配字符串"Hello"的每个字符。
  • 点字符周围的偏执是必需的,以便我们可以通过$n符号来引用捕获的字符。
  • 每个捕获的字符都将替换为替换字符串。我们的替换字符串是"$1"(注意末尾的空格(。这里$1表示输入中第一个捕获的组,因此我们的替换字符串将用该字符加一个空格替换每个字符。
  • 这种技术也会在最后一个字符"o"之后添加一个空格,所以我们调用 TrimEnd(( 来删除它。

可以在此处查看演示。

对于发烧友来说,可以使用以下单行代码通过 LINQ 实现相同的效果:

String.Join(" ", YourString.AsEnumerable())

或者,如果您不想使用扩展方法:

String.Join(" ", YourString.ToCharArray())

这很简单。要匹配任何字符.请使用点,然后替换为该字符以及一个额外的空格

此处的括号(...)用于可由$index访问的分组

查找内容 : "(.)"

替换为"$1 "

演示