我有一个类似于以下内容的字符串:
string str = hello_16_0_2016;
我想要的是从字符串中提取hello。在我的程序中,字符串部分可以在任何地方出现,因为它是自动生成的,所以我无法修复字符串的位置。
例如:我可以从上面获取前五个字符串并将其存储在一个新变量中。
但由于字母的出现是随机的,我只想从上面的字符串中提取字母,所以有人可以指导我做正确的程序吗?
答案 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));
或者,如果性能是一个问题(因为你必须在紧密的循环中执行此操作,或者必须转换数十万个字符串),它可能会更快做到:
var result = new string(str.Where(char.IsLetter).ToArray());
答案 2 :(得分:0)
但由于字母的出现是随机的,我只想提取 上面的字符串中的字母,所以有人可以指导我正确 这样做的程序?
以下内容将提取第一个文本,字符串中的任何位置都没有数字:
Console.WriteLine( Regex.Match("hello_16_0_2016", @"[A-Za-z]+").Value ); // "hello"