我有一个方法,它根据最后出现的正斜杠字符获取一个子字符串。
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会导致错误?
答案 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();