从文件名中获取数字
本文关键字:数字 获取 文件名 | 更新日期: 2023-09-27 18:25:43
我试图从文件名中获取日期,所以我构建了这个reg ex表达式,但我得到的是136413而不是6413,我如何告诉这个脚本跳过与FY相关的数字,比如FY13。所以我的最终结果应该是642013而不是13642013。
提前谢谢。
string input = "X_X_FY13_Template_X_6 4 13_V2.xlsx";
string result = Regex.Replace(input, @"[^'d]", "");
MessageBox.Show(result);
如果您没有特别绑定到regex,您可以执行以下操作:
var input = "X_X_FY13_Template_X_6 4 13_V2.xlsx";
var chunks = input.Split(' ', '_'); // any separator characters
var numChunks = chunks.Where(chunk => chunk.All(char.IsDigit));
var result = String.Concat(numChunks);
从长远来看,它可能比所有的前视图/后视图更容易阅读/维护。
编辑:由于您已经过了日期(只要您愿意接受I18N风险)。。。
var date = String.Join("/", numChunks);
假设你的日期是唯一有空白的方面,你可以做这个
string input = "X_X_FY13_Template_X_6 4 13_V2.xlsx";
string result = input.Split('_').Where(x => x.Contains(' ')).FirstOrDefault();
if(!String.IsNullOrEmpty)
result = result.Replace(" ","");
我会尝试用@"(''d{1-2})
看看这里http://msdn.microsoft.com/it-it/library/az24scfc.aspx#quantifiers记住点的意思是任何字符。
尝试:
string result = Regex.Replace(input, @"(FY'd+)?(V'd+)?[^'d]", "");
最简单的可能是:
var result = string.Concat(input.Skip(10).Where(Char.IsDigit));
但这是一个脆弱的解决方案(Skip(10)
是硬编码的),所以我认为上面Andrew的解决方案更好。
string input = "X_X_FY13_Template_X_6 4 13_V2.xlsx";
Regex reg = new Regex(@"('d* 'd* 'd*)");
Match match = reg.Match(input);
Group group = match.Groups[1];
string result = group.Value;
则结果变量将具有CCD_ 2值。