たとえば、アルファベットのテキストのみが必要なときにいつでも変更できる次の文字列があります。
フェラーリ 5 10 15000 -5 0.2
だから「フェラーリ」が欲しい。
「Ferrari」と数字の間にスペースが入らない場合があります。
string str = "Ferrari 5 10 15000 -5 0.2";
string text = Regex.Match(str, @"[a-zA-Z\s]+").Value.Trim();
空白も一致させてから結果をトリミングすることで、 に一致"Some Car"
し"Some Car 5 10 ..."
ます。
正規表現を使用すると、次のように最初の文字を一致させることができます
string text = "Ferrari 5 10 15000 -5 0.2";
string pat = @"([a-z]+)";
// Instantiate the regular expression object.
Regex r = new Regex(pat, RegexOptions.IgnoreCase);
// Match the regular expression pattern against a text string.
Match m = r.Match(text);
あなたが使用できる
String s = Regex.Match(str, @"[a-zA-Z]+").Value;
常に [数字、-、.、およびスペース] で終わる場合は、次を使用できます.TrimEnd
。
record.TrimEnd("0123456789 .-".ToCharArray());
... または、気になるテキストにスペースがなければ、最初のスペースまで読むことができます ...
var whatINeed = new string(record.TakeWhile(c => c != ' ').ToArray());
...または、スペースで分割されたときに最初のアイテムを取るだけです...
var whatINeed = record.Split().First();
1 つのオプションは、char 配列に変換し、文字を取り出してから文字列に戻すことです。
string text = "Ferrari 5 10 15000 -5 0.2";
string alphas = string.Join( "", text.ToCharArray().Where( char.IsLetter ) );
これは、正規表現が役立つときの 1 つです。
Regex wordMatcher = new Regex("[a-zA-Z]+");
foreach(Match m in wordMatcher.Matches("Ferrari 55 100000 24 hello"))
MessageBox.Show(m.Value);
基本的に、RegEx が行うことは、大文字と小文字を区別せずに文字のグループを一致させようとすることだけです。