尝试学习使用Regex(正则表达式)的更多信息。在C#(VS 2010)中使用Microsoft的Regex版本,我怎么能得到一个简单的字符串:
"Hello"
并将其更改为
"H e l l o"
这可以是任何字母或符号,大写字母,小写字母等的字符串,并且没有其他字母或符号跟随或引导该单词。 (该字符串只包含一个单词)。
(我已阅读其他帖子,但我似乎无法掌握正则表达式。请善待:))。
感谢您对此提供任何帮助。 (解释最有用)。
答案 0 :(得分:5)
您只能通过正则表达式执行此操作,无需内置的c#函数。 使用下面的正则表达式,然后用空格替换匹配的边界。
(?<=.)(?!$)
string result = Regex.Replace(yourString, @"(?<=.)(?!$)", " ");
<强>解释强>
(?<=.)
正向后视断言,匹配必须以字符开头。(?!$)
否定前瞻,断言匹配不会跟随行锚的结尾。因此,所有字符旁边的边界将匹配,但不匹配最后一个字符旁边的边界。或强>
您也可以使用字边界。
(?<!^)(\B|b)(?!$)
string result = Regex.Replace(yourString, @"(?<!^)(\B|b)(?!$)", " ");
<强>解释强>
(?<!^)
负面观察,断言比赛不会在开始。(\B|\b)
匹配两个单词字符和两个非单词字符(\B
)之间存在的边界,或匹配单词字符和非单词字符之间存在的边界({{1 }})。\b
否定前瞻声明匹配不会跟着行锚的结尾。 答案 1 :(得分:5)
Regex.Replace("Hello", "(.)", "$1 ").TrimEnd();
<强>解释强>
$n
表示法引用捕获的字符。$1
表示输入中第一个捕获的组,因此我们的替换字符串将用该字符加一个空格替换每个字符。对于发烧友来说,使用这种单线程可以通过LINQ实现同样的效果:
String.Join(" ", YourString.Select(c => c))
答案 2 :(得分:1)