c# - 在 C# 中提取仅包含字母的字符串

标签 c# .net regex string c#-4.0

 string input = "5991 Duncan Road";
 var onlyLetters = new String(input.Where(Char.IsLetter).ToArray());

输出:DuncanRoad

但我期望输出是 Duncan Road。需要改变什么?

最佳答案

对于像您这样的输入,您不需要正则表达式,只需跳过所有以 SkipWhile() 开头的非字母符号即可:

Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.

C#代码:

var input = "5991 Duncan Road";
var onlyLetters = new String(input.SkipWhile(p => !Char.IsLetter(p)).ToArray());
Console.WriteLine(onlyLetters);

参见 IDEONE demo

一个 regx 解决方案,将删除不属于单词的数字以及相邻的空格:

var res = Regex.Replace(str, @"\s+(?<!\p{L})\d+(?!\p{L})|(?<!\p{L})\d+(?!\p{L})\s+", string.Empty); 

关于c# - 在 C# 中提取仅包含字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33753573/

相关文章:

c# - 我如何访问网络摄像头并在 asp.net c# 中捕获图像?

当两个参数都可以为 null 时,Equals() 的 C# 简写

java - 将特定位置的字符串替换为另一个字符串,而无需在 java 中进行硬编码

c# - 如何查询一个域的用户是否是另一个AD域中的组的成员?

java - GWT String.replace 不起作用

regex - 如何在powershell中使用正则表达式获取所有匹配字符串的列表?

c# - Mono "This XmlWriter does not accept Text at this state Prolog."中的 XDocument 保存错误

c# - Wpf ItemSsource 不更新自定义控件中的视觉控件

.net - 安装包 SignalR 导致无法找到包 'SignalR'

.net - 如何通过 gmail 将整个 .Net 项目作为附件发送?