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

时间:2011-09-06 07:19:24

标签: c# string

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

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

我在Visual Studio 2008中使用C#。

4 个答案:

答案 0 :(得分:58)

你可以试试这个:

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());

答案 1 :(得分:11)

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

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

答案 2 :(得分:4)

如果您只是在初始字母之后,即字符串开头的那些字母(您的示例有点不清楚,我不知道最后的字母会发生什么(),您可以使用不同的正则表达式:

string s2 = Regex.Replace(s, @"(\p{L}+).*", "$1");

答案 3 :(得分:2)

Regex MyRegex = new Regex("[^a-z]", RegexOptions.IgnoreCase);
string s = MyRegex.Replace(@"your 76% strings &*81 gose _ here and collect you want_{ (7 438 ?. !`", @"");
Console.WriteLine(s);

<强>输出

yourstringsgosehereandcollecyouwant