Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从字符串中提取非数字文本_C#_String_Substring - Fatal编程技术网

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

C# 如何从字符串中提取非数字文本,c#,string,substring,C#,String,Substring,例如,我有一个字符串,它可以随时更改,我只需要其中的字母文本: 法拉利5105000-50.2 因此我想要“法拉利” 有时,“法拉利”和数字之间没有空格 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…”使用正则表达式,您可以像这样匹配首字母 s

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

法拉利5105000-50.2

因此我想要“法拉利”

有时,“法拉利”和数字之间没有空格

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;

一种方法是转换为字符数组,取出字母,然后再转换回字符串:

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);

基本上,正则表达式所做的就是尝试在a-z忽略大小写之间匹配字母组。

如果它总是以[数字、、、和空格]结尾,则可以使用
。TrimEnd

record.TrimEnd("0123456789 .-".ToCharArray());
。。。或者如果文本中没有空格,你可以一直读到第一个空格

var whatINeed = new string(record.TakeWhile(c => c != ' ').ToArray());
。。。或者在空格上拆分时只取第一项

var whatINeed = record.Split().First();
使用
@“\b[a-zA-Z\s]+\b”
返回
“法拉利”
。增加复杂性的原因(允许空白,然后修剪)是我认为多单词“columns”可能有用,所以我在模式中允许空白。您可能不需要使用lookahead或其他方法来获取额外的空间就可以让它工作,但就我个人而言(没有任何其他理由这么做),我更喜欢
.Trim()
。意图是明确的。