如何从字符串中提取非数字文本

时间:2012-06-21 23:10:26

标签: c# string substring

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

  

法拉利5 10 15000 -5 0.2

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

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

6 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分: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);

答案 2 :(得分:1)

你可以使用

String s = Regex.Match(str, @"[a-zA-Z]+").Value;

答案 3 :(得分:1)

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

string text = "Ferrari 5 10 15000 -5 0.2";
string alphas = string.Join( "", text.ToCharArray().Where( char.IsLetter ) );

答案 4 :(得分:1)

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

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

基本上所有RegEx都会尝试匹配a-z忽略大小写之间的字母组。

答案 5 :(得分:1)

如果它始终以[数字, - ,。和空格]结尾,则可以使用.TrimEnd

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

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

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

...或者只是在空格分割时取第一项......

var whatINeed = record.Split().First();