C#在字符串中获取2个字符之间的文本

时间:2013-12-05 13:17:14

标签: c# string path

public String GetDirectory(String Path)
    {
        Console.WriteLine("Directorul: ");
        var start = Path.IndexOf(":") + 6;
        var match2 = Path.Substring(start, Path.IndexOf(".") - start);
        return Path;      

    }

我需要获取此字符串中2个字符之间的路径字符串: “C:\文件\ TEXT.TXT”

我希望它在':'和'。'之间显示文字。最后所以:“\ Documents \ Text”

5 个答案:

答案 0 :(得分:5)

int start_index = Path.IndexOf(':')+1;
int end_index = Path.LastIndexOf('.');
int length = end_index-start_index;
string directory = Path.Substring(start_index,length);

答案 1 :(得分:2)

Linq总是令人着迷:

string s = string.Join("",
                       Path.SkipWhile(p => p != ':')
                           .Skip(1)
                           .TakeWhile(p => p != '.') 
                      );

答案 2 :(得分:2)

您可以使用字符串操作,但您也可以使用System.IO.Path函数 - 在我个人看来 - 更优雅的解决方案:

string path = @"C:\Documents\Text.txt";

string pathRoot = Path.GetPathRoot(path);  // pathRoot will be "C:\", for example
string result = Path.GetDirectoryName(path).Substring(pathRoot.Length - 1) +
              Path.DirectorySeparatorChar + 
              Path.GetFileNameWithoutExtension(path);       

Console.WriteLine(result);

答案 3 :(得分:0)

你应该返回你的match2而不是路径,因为路径将保留为C:\ Documents \ Text.txt

public String GetDirectory(String Path)
{
    Console.WriteLine("Directorul: ");
    var start = Path.IndexOf(":") + 6;
    var match2 = Path.Substring(start, Path.IndexOf(".") - start);
    return match2;      

}

答案 4 :(得分:-1)

patch = patch.Substring(patch.IndexOf(':') + 1, patch.IndexOf('.') - 2);