这是我的代码:

private string title(string pth) //I'm passing a path
{
    pth = System.IO.Path.GetFileNameWithoutExtension(pth); // I need an exact filename with no extension
    return pth.Substring(pth.IndexOf('-')+1, pth.Length).Trim(); // trying to return everything after '-'
}


它引发异常。我不知道为什么。这是从文件名中获取标题的极其简单的方法,但是它不起作用。

我已经尝试过pth.Length-1,但是它也不起作用。

最佳答案

您正在使用String.Substring method的版本,该版本允许您指定要提取的字符数。

但是,您要提供length参数作为字符串本身的整个长度,因此也就是ArgumentOutOfRangeException

如果使用this version of String.Substring,则可以提供一个参数(startIndex),然后自动从提供的索引处获取其余字符串。

因此,您可以从此更改代码:

return pth.Substring(pth.IndexOf('-')+1, pth.Length).Trim();


对此:

return pth.Substring(pth.IndexOf('-')+1).Trim();

10-07 23:44