C#解析带有空格的命令行字符串。 System.IO.Path和FileInfo失败

时间:2018-09-20 05:51:04

标签: c# command-line-parsing

我正在寻找一种解析具有空格的路径字符串的可靠方法

例如

"C:/Test has spaces/More Spaces.exe argument"

System.IO.Path.GetDirectoryName有效(返回"C:/Test has spaces"),但是System.IO.Path.GetFileName返回"More Spaces.exe argument"。我要获取.exe并拆分参数。

该字符串不是用双引号引起来的,所以我不能修改输入字符串。

1 个答案:

答案 0 :(得分:0)

您应该在扩展名之后加上字符索引,并删除字符串的其余部分。 像这样:

string myString = "C:/Test has spaces/More Spaces.exe argument";
int index_Of_ext = myString.LastIndexOf("exe")
    //including "exe"
    + 3;

string output = myString.Remove(index_Of_ext,
                                //starting remove
                                myString.Length - index_Of_ext);
                                //the rest of the string

这样,在输出字符串中,您会错过“ exe”(包括扩展名)之后的部分