我有一个字符串看起来像
string url = "www.example.com/aaa/bbb.jpg";
"www.example.com/"固定长度为 18。我想从这个字符串中获取“aaa/bbb”部分(实际的 url 不是示例也不是 aaa/bbb,长度可能会有所不同)
所以这是我所做的:
string newString = url.Substring(18, url.Length - 4);
然后我得到了异常:索引和长度必须引用字符串中的一个位置。我的代码有什么问题以及如何修复它?
最佳答案
Substring
中的第二个参数是子串的长度,而不是结束索引(换句话说,它不是完整字符串的长度)。
您可能应该包括处理以检查它确实以您期望的方式开始,以您期望的方式结束,并且至少与您期望的一样长。然后,如果不匹配,您可以执行其他操作或抛出有意义的错误。
下面是一些验证 url 是否包含您的字符串的示例代码,该代码也进行了一些重构,以便更轻松地将前缀/后缀更改为 strip:
var prefix = "www.example.com/";
var suffix = ".jpg";
string url = "www.example.com/aaa/bbb.jpg";
if (url.StartsWith(prefix) && url.EndsWith(suffix) && url.Length >= (prefix.Length + suffix.Length))
{
string newString = url.Substring(prefix.Length, url.Length - prefix.Length - suffix.Length);
Console.WriteLine(newString);
}
else
//handle invalid state
关于c# - 子字符串索引和长度必须引用字符串中的某个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148238/