我一直在我的应用中收到此错误 这个代码假设工作有多简单的小片段
String lang = "Language.en-US".ToString();
appPath.Text = lang.Substring(2, lang.Length);//
错误
System.ArgumentOutOfRangeException:
Index and length must refer to a location within the string
我每次更改起始索引时都会收到错误但如果我将其设置为0则可以正常工作,但是我无法将起始索引更改为高于零的数字是否可以下载任何内容,例如更新以修复此问题我确定我的系统在使用.Net 4.0时出错了。
答案 0 :(得分:5)
您应该将其更改为
appPath.Text = lang.Substring(2, lang.Length - 2);
基本上根据Substring方法文档
public string Substring(
int startIndex,
int length
)
startIndex + length
应小于字符串长度。
如果您总是希望从第二个位置到最后一个位置获取字符串,则应使用 Substring 的重载版本
public string Substring(
int startIndex
)
答案 1 :(得分:3)
问题在于,当你将lang.Length作为从索引2中提取的字符串长度时,范围将超出字符串。
应该是
lang.Substring(2, lang.Length - 2);
答案 2 :(得分:3)
Substring接受两个参数,第一个( startIndex )是从哪里开始,它应该是一个介于0和该字符串长度之间的数字( length );第二个是这个子串的长度,它应该在0和 length-startIndex 之间
答案 3 :(得分:2)
答案 4 :(得分:1)
我相信第一个参数是起始位置,第二个参数是要采用的字符数。因为你是从第二个位置开始的,所以如果你使用lang.Length字符,那么你将超出字符串的范围。
答案 5 :(得分:1)
以下大部分答案似乎都是正确的(请参阅@parapura rajkumar回答)。
但在你的情况下,更好的选择是看看
String.Substring Method (Int32)
看到你需要整个字符串的剩余部分