我的文件夹中有一堆文件,我正在遍历它们。 如何从下面的示例中提取值?我只需要值 0519 。
DOC 75-20-0519-1.PDF
下面的代码给出了完整部分包括-1 。
Convert.ToInt32(Path.GetFileNameWithoutExtension(objFile).Split('-')[2]);
感谢任何帮助。
答案 0 :(得分:3)
您可以尝试使用正则表达式来匹配值。
模式:
[0-9]+ - one ore more digits
(?=[^0-9][0-9]+$) - followed by not a digit and one or more digits and end of string
代码:
using System.Text.RegularExpressions;
...
string file = "DOC 75-20-0519-1.PDF";
// "0519"
string result = Regex
.Match(Path.GetFileNameWithoutExtension(file), @"[0-9]+(?=[^0-9][0-9]+$)")
.Value;
如果Split('-')
失败,并且结果是整个字符串,则表明您的分隔符错误 。可以说是破折号之一:
"DOC 75–20–0519–1.PDF"; // n-dash
"DOC 75—20—0519—1.PDF"; // m-dash
答案 1 :(得分:0)
您可以为此使用REGEX
Match match = Regex.Match("DOC 75-20-0519-1.PDF", @"DOC\s+\d+\-\d+\-(\d+)\-\d+", RegexOptions.IgnoreCase);
string data = match.Groups[1].Value;