我有一个字符串,需要来自所述字符串的字母。如何从C#中的字符串只获取字母?
string s = "EMA123_33"; // I need "EMA"
string s = "EMADRR123_33"; // I need "EMADRR"
我使用C#在Visual Studio 2008中
我有一个字符串,需要来自所述字符串的字母。如何从C#中的字符串只获取字母?
string s = "EMA123_33"; // I need "EMA"
string s = "EMADRR123_33"; // I need "EMADRR"
我使用C#在Visual Studio 2008中
你可以试试这个:
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, @"(\p{L}+).*", "$1");
即使这是一个额外的要求,我认为改变Carten的使用'TakeWhile'的答案会更有效,更容易理解/维护。 –
也许,可能不是。在阅读处理字符串操作的代码时,我宁愿使用正则表达式而不是LINQ,我想。 – Joey
公平,但我猜测大多数人更喜欢使用LINQ,而不是使用正则表达式中的Unicode字符类和它们的语法。 –
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
如果我可能会问,为什么downvotes和close-votes?好的问题不是“好英语”,但我认为其含义不是很明确 – Carsten
为什么投票下降?是的,他说“字母”时,他的意思是“字母”,但这是一个完全合法的问题。 –
»英文字母«表示»字母«是印度人民的常见错误。只是习惯于这样的事实,即不是来自美国的人使用...... – Joey