2011-09-06 15 views
22

私は文字列を持っており、上記文字列からの文字が必要です。C#で文字列から文字のみを取得するには?

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

私は、Visual StudioでC#を使用しています2008年

+1

なぜ私が尋ねるかもしれないdownvotesとクローズド投票? OK質問は「良い英語」ではありませんが、サンプルに基づいてその意味があまり明確ではないと思います – Carsten

+1

なぜ投票が停止しますか?ええ、彼は "文字"を意味する "アルファベット"を言ったが、そうでなければ完全に正当な質問だった。 –

+4

»アルファベット«を意味する»文字«は、インドの起源の人々によって作られた一般的な間違いです。ちょうど、SOが米国人ではない人々によって使用されているという事実に慣れてください。 – Joey

答えて

50

あなたはこれを試すことができます。

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

'Chars'プロパティを使う必要はありません。文字列は列挙できますが、' ToArray'を使って文字列コンストラクタの配列を作る必要があります。 'IEnumerable 'から文字列を作ることはできません。 – Guffa

+0

ああ - ありがとう...(確認しなかった) - BTW:.Charsが読みやすくなっていると思うが、それは趣味の問題かもしれない。 – Carsten

+0

'Chars'を使ってコンパイルすることさえできなかった。インデクサは 'Chars'という名前なので、VBでは' s.Chars(0) 'を使うことができますが、C#では' s [0] 'です。 – Guffa

11

大文字のみが必要です。正規表現を使用して、すべての非lette RS:文字列の先頭にあるもの、すなわち

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

Cartenの答えには、ローマ字以外のアルファベットを使用するメリットがあります。あなたはUTF文字クラスの使用を検討すべきです( '\ p {IsLetter}'と思います)。 –

+0

@リチャード・スザレイ:そうです。それは、OPが望んでいる行動に依存します。 – Guffa

+2

\ * twitches \ * Richard、これらはUnicode文字クラスです。 UTFはUnicodeの変換フォーマットにラベルを付けるだけで、実際には文字セットを参照しません。 – Joey

3

あなただけ初期手紙後にしている場合は、(あなたの例では、私が手紙に何が起こるか分からないという点では不明ビットです文字列の末尾)は、さまざまな正規表現を使用することができます

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

これが追加の要件だったとしても、私はTakeWhileを使うためのCartenの答えを変更する方がより効率的で理解しやすくなると思います。 –

+0

おそらく、恐らくそうではありません。文字列の操作を扱うコードを読むときは、LINQよりも正規表現をとると思います。 – Joey

+0

公正ですが、大部分の人がUnicodeの文字クラスとRegexの構文よりもLINQのほうが似ていると推測されます。 –

1
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

関連する問題