我的文件类似于:“dslkj20111104-BATCH2244_20111113-091347.txt” 我只需要“dslkj”而不是其余的数字或数字或.txt,我该怎么做?
var onlyLetters = new String(fileName.Name.Where(Char.IsLetter).ToArray());
我试过了,但它也会给我“.txt”和“批处理”,我不想要任何帮助。
答案 0 :(得分:7)
尝试使用.TakeWhile()代替.Where()。
var onlyLetters = new String(fileName.Name.TakeWhile(Char.IsLetter).ToArray());
答案 1 :(得分:3)
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);