仅提取包含数字字符串和符号的字符串中包含字母的子字符串

时间:2016-06-20 16:46:08

标签: c#

我有一个类似于以下内容的字符串:

 string str = hello_16_0_2016;

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

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

但由于字母的出现是随机的,我只想从上面的字符串中提取字母,所以有人可以指导我做正确的程序吗?

3 个答案:

答案 0 :(得分:1)

假设您只需要a-z,您能否只使用简单的正则表达式来提取字母字符?

using System.Text.RegularExpressions;

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

// onlyLetters = "hello"

答案 1 :(得分:1)

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

var str = "hello_16_0_2016";
var result = string.Concat(str.Where(char.IsLetter));

Check it out

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

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

Check it too

答案 2 :(得分:0)

  

但由于字母的出现是随机的,我只想提取   上面的字符串中的字母,所以有人可以指导我正确   这样做的程序?

以下内容将提取第一个文本,字符串中的任何位置都没有数字:

Console.WriteLine( Regex.Match("hello_16_0_2016", @"[A-Za-z]+").Value ); // "hello"