C# 仅从包含数字、字符串和符号的字符串中提取包含字母的子字符串

C# 仅从包含数字、字符串和符号的字符串中提取包含字母的子字符串,c#,C#,我有一个字符串,如下所示: string str = hello_16_0_2016; 我想要的是从字符串中提取hello。在我的程序中,字符串部分可以在任何地方出现,因为它是自动生成的,所以我无法确定字符串的位置 例如:我可以从上面获取前五个字符串,并将其存储在一个新变量中 但是,由于字母的出现是随机的,我只想从上面的字符串中提取字母,所以有人能告诉我正确的操作步骤吗?假设您只需要a-z,您能用一个简单的正则表达式只提取字母字符吗 using System.Text.RegularExpr

我有一个字符串,如下所示:

 string str = hello_16_0_2016;
我想要的是从字符串中提取hello。在我的程序中,字符串部分可以在任何地方出现,因为它是自动生成的,所以我无法确定字符串的位置

例如:我可以从上面获取前五个字符串,并将其存储在一个新变量中


但是,由于字母的出现是随机的,我只想从上面的字符串中提取字母,所以有人能告诉我正确的操作步骤吗?

假设您只需要a-z,您能用一个简单的正则表达式只提取字母字符吗

using System.Text.RegularExpressions;

var str = "hello_16_0_2016";
var onlyLetters = Regex.Replace(str, @"[^a-zA-Z]", "");

// onlyLetters = "hello"

我会使用这样的东西(使用Linq):

或者,如果性能是一个问题(因为您必须在紧密循环中执行此操作,或者必须转换数十万个字符串),则执行以下操作可能会更快:

var result = new string(str.Where(char.IsLetter).ToArray());

但由于字母的出现是随机的,我只想提取 上面字符串中的字母,那么有人能引导我找到正确的吗 这样做的程序是什么

以下内容将提取第一个文本,字符串中没有数字:

Console.WriteLine( Regex.Match("hello_16_0_2016", @"[A-Za-z]+").Value ); // "hello"
呃,
str.Split(“”).First(s=>s.All(char.isleter))
Console.WriteLine( Regex.Match("hello_16_0_2016", @"[A-Za-z]+").Value ); // "hello"