不能给LastIndexOf()方法添加1

本文关键字:方法 添加 LastIndexOf 不能 | 更新日期: 2023-09-27 18:04:25

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

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

给定字符串The/quick/brown/fox,我得到/fox的子字符串结果。我想摆脱正斜杠字符,这样我只得到fox作为结果。

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

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

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

不能给LastIndexOf()方法添加1

您考虑过更简单的String.Split吗?

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

假设您的路径有/,请尝试只使用Substring(int startIndex):

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

(为了使示例工作,需要从第二个参数(所需子字符串的长度)中扣除1。)

但使用Path.GetFileName:

可能会更好
Path.GetFileName("The/quick/brown/fox");

如果它确实是一个路径,请查看'System.IO.Path'中可用的路径操作函数。使用

您将得到所需的结果
Path.GetFileName(path)

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

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