如何只从C#中的字符串中获取字母?

我有一个字符串,需要来自所述字符串的字母。

string s = "EMA123_33"; // I need "EMA" string s = "EMADRR123_33"; // I need "EMADRR" 

我在Visual Studio 2008中使用C#。

你可以试试这个:

 var myString = "EMA123_33"; var onlyLetters = new String(myString.Where(Char.IsLetter).ToArray()); 

请注意:这个版本会发现“e”就像“E” – 如果你只需要大写字母,那么做这样的事情:

 var myString = "EMA123_33"; var onlyLetters = new String(myString.Where(c => Char.IsLetter(c) && Char.IsUpper(c)).ToArray()); 

您可以使用正则表达式替换所有非字母:

 string s2 = Regex.Replace(s, @"[^AZ]+", String.Empty); 

如果你刚刚在字母之后,即字符串开头的字母(你的例子有点不清楚,我不知道字符串末尾的字母会发生什么),你可以使用不同的字母正则表达式:

 string s2 = Regex.Replace(s, @"(\p{L}+).*", "$1"); 
 Regex MyRegex = new Regex("[^az]", RegexOptions.IgnoreCase); string s = MyRegex.Replace(@"your 76% strings &*81 gose _ here and collect you want_{ (7 438 ?. !`", @""); Console.WriteLine(s); 

产量

yourstringsgosehereandcollecyouwant