私は文字列を持っており、上記文字列からの文字が必要です。C#で文字列から文字のみを取得するには?
string s = "EMA123_33"; // I need "EMA"
string s = "EMADRR123_33"; // I need "EMADRR"
私は、Visual StudioでC#を使用しています2008年
私は文字列を持っており、上記文字列からの文字が必要です。C#で文字列から文字のみを取得するには?
string s = "EMA123_33"; // I need "EMA"
string s = "EMADRR123_33"; // I need "EMADRR"
私は、Visual StudioでC#を使用しています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());
'Chars'プロパティを使う必要はありません。文字列は列挙できますが、' ToArray'を使って文字列コンストラクタの配列を作る必要があります。 'IEnumerable
ああ - ありがとう...(確認しなかった) - BTW:.Charsが読みやすくなっていると思うが、それは趣味の問題かもしれない。 – Carsten
'Chars'を使ってコンパイルすることさえできなかった。インデクサは 'Chars'という名前なので、VBでは' s.Chars(0) 'を使うことができますが、C#では' s [0] 'です。 – Guffa
大文字のみが必要です。正規表現を使用して、すべての非lette RS:文字列の先頭にあるもの、すなわち
string s2 = Regex.Replace(s, @"[^A-Z]+", String.Empty);
あなただけ初期手紙後にしている場合は、(あなたの例では、私が手紙に何が起こるか分からないという点では不明ビットです文字列の末尾)は、さまざまな正規表現を使用することができます
string s2 = Regex.Replace(s, @"(\p{L}+).*", "$1");
これが追加の要件だったとしても、私はTakeWhileを使うためのCartenの答えを変更する方がより効率的で理解しやすくなると思います。 –
おそらく、恐らくそうではありません。文字列の操作を扱うコードを読むときは、LINQよりも正規表現をとると思います。 – Joey
公正ですが、大部分の人がUnicodeの文字クラスとRegexの構文よりもLINQのほうが似ていると推測されます。 –
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とクローズド投票? OK質問は「良い英語」ではありませんが、サンプルに基づいてその意味があまり明確ではないと思います – Carsten
なぜ投票が停止しますか?ええ、彼は "文字"を意味する "アルファベット"を言ったが、そうでなければ完全に正当な質問だった。 –
»アルファベット«を意味する»文字«は、インドの起源の人々によって作られた一般的な間違いです。ちょうど、SOが米国人ではない人々によって使用されているという事実に慣れてください。 – Joey