剥离只留下字符串中的大多数字母,只留下左侧字母

时间:2011-12-20 14:56:43

标签: c# regex c#-4.0

我的文件类似于:“dslkj20111104-BATCH2244_20111113-091347.txt” 我只需要“dslkj”而不是其余的数字或数字或.txt,我该怎么做?

var onlyLetters = new String(fileName.Name.Where(Char.IsLetter).ToArray());

我试过了,但它也会给我“.txt”和“批处理”,我不想要任何帮助。

5 个答案:

答案 0 :(得分:7)

尝试使用.TakeWhile()代替.Where()

var onlyLetters = new String(fileName.Name.TakeWhile(Char.IsLetter).ToArray());

答案 1 :(得分:3)

使用Enumerable.TakeWhile

var leadingLetters = 
    new String(fileName.Name.TakeWhile(Char.IsLetter).ToArray());

TakeWhile完全听起来是这样的:当条件为真时,它从序列中获取。在这种情况下,您希望在字符为字母时从字符序列中取出,并在到达非字母时立即停止。

另外,我建议您将变量从onlyLetters重命名为leadingLetters。鉴于您的简明英语描述,onlyLetters相当误导。

答案 2 :(得分:1)

听起来像:

string original = "slkj20111104-BATCH2244_20111113-091347.txt";
string stripped = Regex.Match(original,"^[a-z]+", RegexOptions.IgnoreCase).Value;

答案 3 :(得分:0)

[^a-z].*替换为空字符串。

答案 4 :(得分:0)

Regex r = new Regex("^[A-z]+");
var onlyLetters = r.Match(name);