3

例如,我有这个字符串可以随时更改,我只想要其中的字母文本:

法拉利 5 10 15000 -5 0.2

因此,我想要“法拉利”。

有时“法拉利”和数字之间不会有空格。

4

6 回答 6

6
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 ..."

于 2012-06-21T23:15:35.593 回答
1

使用正则表达式,您可以像这样匹配首字母

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);
于 2012-06-21T23:16:37.997 回答
1

你可以使用

String s = Regex.Match(str, @"[a-zA-Z]+").Value;
于 2012-06-21T23:16:51.190 回答
1

一种选择是转换为 char 数组并提取字母,然后转换回字符串:

string text = "Ferrari 5 10 15000 -5 0.2";
string alphas = string.Join( "", text.ToCharArray().Where( char.IsLetter ) );
于 2012-06-21T23:17:46.223 回答
1

这是正则表达式派上用场的时候之一:

Regex wordMatcher = new Regex("[a-zA-Z]+");
foreach(Match m in wordMatcher.Matches("Ferrari 55 100000 24 hello"))
    MessageBox.Show(m.Value);

本质上,RegEx 所做的只是尝试匹配 az 之间的字母组,忽略大小写。

于 2012-06-21T23:20:45.763 回答
1

如果它总是以 [digits, -, ., and spaces] 结尾,你可以使用.TrimEnd

record.TrimEnd("0123456789 .-".ToCharArray());

...或者如果您关心的文本中没有空格,您可以阅读到第一个空格...

var whatINeed = new string(record.TakeWhile(c => c != ' ').ToArray());

...或者在空格上拆分时只取第一个项目...

var whatINeed = record.Split().First();
于 2012-06-21T23:39:59.683 回答