只去掉字符串中最左边的字母,只去掉左边的字母

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";

以上是关于只去掉字符串中最左边的字母,只去掉左边的字母的主要内容,如果未能解决你的问题,请参考以下文章

shell把字符串中的字母去掉,只保留数字

去掉字符串最右边的数字或字母

oracle 去掉字符,剩下数字

Python----字符串常用方法总结

oracle 怎么样才能去掉字符串前面的零

Python3基础 str lstrip 去掉字符串左边的空格