拆分文件名 - 子串?

时间:2009-11-23 22:24:48

标签: c# .net

我有以下文件名:

SCO_InsBooking_1.pdf

SCO_InsBooking_10.pdf

SCO_InsBooking_100.pdf

SCO_InsBooking_1000.pdf

我使用FileInfo读取文件名并希望将其拆分,以便我只获得1,10,100或1000数字,我将如何实现这一目标?

5 个答案:

答案 0 :(得分:5)

使用正则表达式:

string number = Regex.Match("SCO_InsBooking_1000.pdf", @"\d+").Value;

假设文件名中没有其他编号。

答案 1 :(得分:4)

filename = filename.Substring(filename.lastIndexOf("_")+1);
filename = filename.Substring(0, filename.indexOf("."));

可选地

filename = Regex.Replace(filename, "_(\d+).pdf$", "$1");

答案 2 :(得分:1)

string number = "SCO_InsBooking_1.pdf".split('_')[2].split('.')[0];

当然,使用某些边界检查以避免索引异常会更好。

答案 3 :(得分:0)

您可以使用正则表达式执行此操作:

Regex.Match(filename, @".*_(\d+).pdf").Groups[1].Value

答案 4 :(得分:0)

您可以使用string.replace()

using System.Collections.Generic;

namespace strings1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> names = new List<string> { 
                "SCO_InsBooking_1.pdf", 
                "SCO_InsBooking_10.pdf", 
                "SCO_InsBooking_100.pdf", 
                "SCO_InsBooking_1000.pdf" };

            List<string> numbers = new List<string>();
            foreach (string item in names)
            {
                numbers.Add(item.Replace("SCO_InsBooking_", string.Empty).Replace(".pdf",string.Empty));
            }
        }
    }
}