从特定位置的C#中的字符串中提取值

时间:2019-06-18 15:00:56

标签: c# string

我的文件夹中有一堆文件,我正在遍历它们。 如何从下面的示例中提取值?我只需要值 0519

DOC 75-20-0519-1.PDF

下面的代码给出了完整部分包括-1

Convert.ToInt32(Path.GetFileNameWithoutExtension(objFile).Split('-')[2]);

感谢任何帮助。

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;