只去掉字符串中最左边的字母,只去掉左边的字母
Posted
技术标签:
【中文标题】只去掉字符串中最左边的字母,只去掉左边的字母【英文标题】:strip out only left most letters from a string, only the left side letters 【发布时间】:2012-01-24 12:37:54 【问题描述】:我的文件类似于:“dslkj20111104-BATCH2244_20111113-091347.txt” 我只需要“dslkj”而不需要其余的数字或数字或 .txt,我该如何处理?
var onlyLetters = new String(fileName.Name.Where(Char.IsLetter).ToArray());
我试过了,但它也会给我“.txt”和“batch”,我不希望有任何帮助。
【问题讨论】:
Regex 将是^[A-z]+
我不知道它是否适用于 C#。
【参考方案1】:
试试.TakeWhile() 而不是.Where()。
var onlyLetters = new String(fileName.Name.TakeWhile(Char.IsLetter).ToArray());
【讨论】:
【参考方案2】:使用Enumerable.TakeWhile
:
var leadingLetters =
new String(fileName.Name.TakeWhile(Char.IsLetter).ToArray());
TakeWhile
就像它听起来的那样:它在条件为真时从序列中获取。在这种情况下,您希望在字符是字母时从字符序列中取出,并在到达非字母时立即停止。
另外,我建议将变量从 onlyLetters
重命名为 leadingLetters
。鉴于您的简单英文描述,onlyLetters
相当具有误导性。
【讨论】:
【参考方案3】:听起来像:
string original = "slkj20111104-BATCH2244_20111113-091347.txt";
string stripped = Regex.Match(original,"^[a-z]+", RegexOptions.IgnoreCase).Value;
【讨论】:
嗯,这不是与要求的完全相反吗? @fge 我最初确实误读了要保留与丢弃的位,但几分钟前已修复;p 感谢 Mark 感谢您的帮助,它运行良好,但由于及时回复,我选择了 Jason Meckley 的答案。【参考方案4】:用空字符串替换[^a-z].*
。
【讨论】:
.NET / C#string
上没有 .replace
【参考方案5】:
Regex r = new Regex("^[A-z]+");
var onlyLetters = r.Match(name);
【讨论】:
这不仅会得到前导字母,还会得到非数字字符。试试这个字符串 original2 = "mmm_sales_12121212.txt";以上是关于只去掉字符串中最左边的字母,只去掉左边的字母的主要内容,如果未能解决你的问题,请参考以下文章