我有这个代码。我试图只检索文本“第一个程序”。考虑到我知道索引说25并且字符串的总长度是35。
string text="Hello world ! This is my first program";
Response.Write(text.SubString(25,35));
但我在运行时遇到错误“System.ArgumentOutOfRangeException:startIndex不能大于字符串的长度”
答案 0 :(得分:14)
String.Substring
的参数是:
public string Substring(
int startIndex,
int length
)
你试图在第26个字符(startIndex从零开始)之后取<35>个,这超出了范围。
如果您只是想从第25个字符到字符串末尾,请使用text.SubString(24)
答案 1 :(得分:4)
string.Substring()
的第二个参数是长度,而不是结束偏移:
Response.Write(text.Substring(25,10));
答案 2 :(得分:0)
Substring
的第二个参数是您希望子字符串的长度,而不是子字符串的终点。 25 + 35
超出原始字符串的范围,因此会引发异常。
答案 3 :(得分:0)
SubString的第二个参数是子字符串中的字符数。
更简单的方法。
int startIndex=25; // find out startIndex
int endIndex=35; // find out endIndex, in this case it is text.Length;
int length= endIndex - startIndex; // always subtract startIndex from the position wherever you want your substring to end i.e. endIndex
// call substring
Response.Write(text.Substring(startIndex,length));
您可以执行某些操作或调用函数来获取开始/结束索引值。使用这种方法,您不太可能遇到与索引相关的任何问题。
答案 4 :(得分:0)
在此期间,您可以使用
(LINQ ElementAt)和(ElementAtOrDefault)方法。但是,当指定的索引是负值或不小于序列的大小时, ElementAt 扩展方法会抛出 System.ArguementOutOfRangeException 。