在2点分割一个字符串

时间:2013-10-04 22:40:35

标签: c# c#-4.0

我有一个名为 file_test1.txt 的文件,我想从名称中提取 test1 并将其放在一个字符串中。这是最好的方法吗?

E.g。

string fullfile = @"C:\file_test1.txt";
string section = [test1] from fullfile;      // <- expected result

我希望能够拆分'file _''。txt',因为'test1'部分可能更大或然而,'file _''。txt'总是相同的。

7 个答案:

答案 0 :(得分:6)

尝试Path.GetFileNameWithoutExtension(fullfile).Substring(5)(或Substring("TEMPLATE_PREFIX".Length)

答案 1 :(得分:2)

你可以尝试spilled

 var test = Path.GetFileNameWithoutExtension(fullfile).split('_')[1]; 

答案 2 :(得分:1)

尝试以下

string fullfile = @"C:\file_test1.txt";
var name = fullfile.Substring(8,fullfile.Length-12)

当c:\ file_和.txt被修复时,您可以从索引8(跳过前导名称)开始,从字符串总长度的长度开始 - 12(12 =&gt;前导名称的长度和尾随扩展名)

答案 3 :(得分:1)

以为我会提供一个使用Split的解决方案并处理具有多个下划线的文件:

string.Join("_", Path.GetFileNameWithoutExtension(file).Split('_').Skip(1));

答案 4 :(得分:0)

String.Split()适用于我的用途:

http://msdn.microsoft.com/en-us/library/b873y76a.aspx

答案 5 :(得分:0)

显然有许多方法可以实现这一目标。这是另一种方法:

        string fullfile = @"C:\file_test1.txt";
        int index1 = fullfile.LastIndexOf("file_");
        if (index1 != -1)
        {
            int index2 = fullfile.IndexOf(".", index1);
            if (index2 != -1)
            {
                string section = fullfile.Substring(index1 + 5, index2 - index1 - 5);
            }
        }

答案 6 :(得分:0)

您还可以使用此正则表达式获取“test1”或任何后续文件名(假设您的文件命名约定保持不变!):

var defaultRegex = new Regex(@"(?<=_).*(?=.txt)");

var matches = defaultRegex.Matches(fullfile);

var match = matches[0].Value;

正则表达式:

  

(小于?= _)。*(?= TXT)

使用正面背后查找前面带有'_'的文本,并使用正向前导来查找前面有'.txt'的文本。