只去掉字符串中最左边的字母,只有左边的字母
我有这样的文件:“dslkj20111104-BATCH2244_20111113-091347.txt” 我只需要“dslkj”而不是其余的数字或数字或.txt,我该如何接受?只去掉字符串中最左边的字母,只有左边的字母
var onlyLetters = new String(fileName.Name.Where(Char.IsLetter).ToArray());
我试过,但它会给我“.TXT”和‘批’太,我不希望任何帮助表示赞赏。
尝试.TakeWhile()而不是.Where()。
var onlyLetters = new String(fileName.Name.TakeWhile(Char.IsLetter).ToArray());
谢谢,就像一个魅力工作 – aspmvcdeveloper 2011-12-20 15:17:44
var leadingLetters =
new String(fileName.Name.TakeWhile(Char.IsLetter).ToArray());
TakeWhile
不正是它听起来像:它从序列需要而条件为真。在这种情况下,您希望在字符是字母时从字符序列中提取字符,并在您到达非字母时立即停止。
此外,我建议将您的变量从onlyLetters
重命名为leadingLetters
。 onlyLetters
是相当误导给你的纯英文描述。
听起来像:
string original = "slkj20111104-BATCH2244_20111113-091347.txt";
string stripped = Regex.Match(original,"^[a-z]+", RegexOptions.IgnoreCase).Value;
恩,这不是完全相反,而是要求什么? – fge 2011-12-20 15:05:49
@fge我的确最初误读了这些位以保持放弃状态,但几分钟前已修复; p – 2011-12-20 15:06:42
感谢Mark非常感谢您的帮助,它完美地工作,但我选择了Jason Meckley的答案,因为我的答复很快。 – aspmvcdeveloper 2011-12-20 15:19:31
由空字符串替换[^a-z].*
。
NET/C#上没有'.replace'字符串 – 2011-12-20 15:06:06
对不起,我没有看到它是C#第一个... – fge 2011-12-20 15:06:57
Regex r = new Regex("^[A-z]+");
var onlyLetters = r.Match(name);
这不会得到只有前导字母它也将得到非数字字符。试试这个字符串original2 =“mmm_sales_12121212.txt”; – aspmvcdeveloper 2011-12-20 15:16:51
正则表达式会是'^ [A-z] +'但我不知道它适用于C#。 – luastoned 2011-12-20 14:59:46