例如,我有一个字符串,它随时可能会改变,我只想从中获取字母文本:
有时 "Ferrari" 和数字之间不会有空格。
所以我想要的是 "Ferrari"。Ferrari 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 5 10 ..."
中匹配到 "Some Car"
。使用正则表达式,您可以轻松匹配初始字母,如下所示
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);
.TrimEnd
方法:record.TrimEnd("0123456789 .-".ToCharArray());
...或者如果您关心的文本中没有空格,则可以读取到第一个空格...
var whatINeed = new string(record.TakeWhile(c => c != ' ').ToArray());
... 或者只需在空格上拆分时获取第一个项目...
var whatINeed = record.Split().First();
你可以使用
String s = Regex.Match(str, @"[a-zA-Z]+").Value;
string text = "Ferrari 5 10 15000 -5 0.2";
string alphas = string.Join( "", text.ToCharArray().Where( char.IsLetter ) );
Regex wordMatcher = new Regex("[a-zA-Z]+");
foreach(Match m in wordMatcher.Matches("Ferrari 55 100000 24 hello"))
MessageBox.Show(m.Value);
@"\b[a-zA-Z\s]+\b"
返回"Ferrari "
。添加复杂性的原因(允许空格并修剪)是我认为多词“列”可能有用,因此我允许模式中的空格。您可能可以使用前瞻或其他方法使其在不获取额外空间的情况下工作,但就个人而言(没有其他原因),我更喜欢.Trim()
。意图很明确。 - Tim S.