无法将1添加到LastIndexOf()方法

时间:2015-07-23 19:23:13

标签: c# argumentexception

我有一个方法,它根据最后出现的正斜杠字符获取一个子字符串。

path.Substring(path.LastIndexOf('/'), path.Length - path.LastIndexOf('/') )

给定字符串The/quick/brown/fox,我得到/fox的子字符串结果。我想摆脱正斜线字符,这样我才会得到fox

我尝试在LastIndexOf()方法中加1,但我得到的是ArgumentOutOfRangeException

path.Substring(path.LastIndexOf('/') + 1, path.Length - path.LastIndexOf('/'))

LastIndexOf()方法返回int,为什么添加1会导致错误?

4 个答案:

答案 0 :(得分:3)

您是否考虑过更简单的String.Split

var str = "The/quick/brown/fox";
var result = str.Split('/').Last();

//result = "fox"

答案 1 :(得分:2)

假设您的路径为/,请尝试Substring(int startIndex)

path.Substring(path.LastIndexOf('/') + 1);

(为了使您的样本有效,您需要从第二个参数中扣除1,这是所需子字符串的长度。)

但最好使用Path.GetFileName

Path.GetFileName("The/quick/brown/fox");

答案 2 :(得分:1)

如果它确实是一条路径,请查看'System.IO.Path'中可用的路径操作函数。您将通过

获得所需的结果
Path.GetFileName(path)

答案 3 :(得分:0)

我认为你可以用LINQ做得更好:

path.Split('/').LastOrDefault();