尝试学习使用Regex(正则表达式)的更多信息.在C#(VS 2010)中使用微软的Regex版本,我怎么能得到一个简单的字符串:
"Hello"
Run Code Online (Sandbox Code Playgroud)
并将其更改为
"H e l l o"
Run Code Online (Sandbox Code Playgroud)
这可以是任何字母或符号,大写字母,小写字母等的字符串,并且没有其他字母或符号跟随或引导该单词.(该字符串仅包含一个单词).
(我已经阅读了其他帖子,但我似乎无法掌握正则表达式.请善待:)).
感谢您的帮助.(解释最有用).
你可以通过正则表达式来完成这个,不需要内置的c#函数.使用以下正则表达式,然后用空格替换匹配的边界.
(?<=.)(?!$)
Run Code Online (Sandbox Code Playgroud)
string result = Regex.Replace(yourString, @"(?<=.)(?!$)", " ");
Run Code Online (Sandbox Code Playgroud)
说明:
(?<=.) 积极的lookbehind断言匹配必须以字符开头.(?!$)否定前瞻声明匹配将不会跟随行锚的结尾.因此,所有字符旁边的边界将匹配,但不匹配最后一个字符旁边的边界.要么
您也可以使用单词边界.
(?<!^)(\B|b)(?!$)
Run Code Online (Sandbox Code Playgroud)
string result = Regex.Replace(yourString, @"(?<!^)(\B|b)(?!$)", " ");
Run Code Online (Sandbox Code Playgroud)
说明:
(?<!^) 负面观察,断言比赛不会在开始.(\B|\b)匹配两个单词字符和两个非单词字符\B之间存在的边界()或匹配单词字符和非单词字符(\b)之间存在的边界.(?!$) 否定前瞻声明匹配将不会跟随行锚点的结尾. Regex.Replace("Hello", "(.)", "$1 ").TrimEnd();
Run Code Online (Sandbox Code Playgroud)
说明
$n符号引用捕获的字符.$1表示输入中第一个捕获的组,因此我们的替换字符串将用该字符加一个空格替换每个字符.对于爱好者来说,使用这个单线程可以通过LINQ实现同样的效果:
String.Join(" ", YourString.Select(c => c))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10744 次 |
| 最近记录: |