2 sinat 34773351 sinat_34773351 于 2016.05.11 00:16 提问

startIndex 不能大于字符串长度。

我要实现的是从知识点的库里面找到某一门课程的知识点编号的最大值,知识点编号
是10位,前四位是课程编号,中间两位是章节编号,最后四位就是顺序号,然后取后
四位加上1,再把课程号,章节号,新的顺序号组合一下成为新的知识点编号,存进去。
获取最大后四位加1的代码是这样的:

 String sqlstr2 = "select MAX(Kno) Kno1 from KnowledgePoints where Kno LIKE '" + courseno + "%'";
        SqlCommand Comm2=new SqlCommand(sqlstr2,Conn);
        SqlDataReader dr2=Comm2.ExecuteReader();
        if (dr2.Read())
        {
            knowledgeno = dr2["Kno1"].ToString().Substring(6, 4);
            konwledgeintno = Convert.ToInt32(knowledgeno);
        }
        konwledgeintno++;
        knowledgeno = konwledgeintno.ToString("0000");

当数据库里面没有关于某一门课程的知识点时,添加这门课程的知识点时正常这个if语句就不会被执行,但是现在点击添加时就会出现“startIndex 不能大于字符串长度”这个提示。
这是怎么回事呢?求帮忙,谢谢!

3个回答

caozhy
caozhy   Ds   Rxr 2016.05.11 00:18

knowledgeno = dr2["Kno1"].ToString().Substring(6, 4);

dr2["Kno1"].ToString() 输出下这个字符串是什么,它有没有10个以上的字符。

caozhy
caozhy 回复pri310: 对,但是是zero based
大约 2 年之前 回复
sinat_34773351
sinat_34773351 回复caozhy: 我要取最后四个字符 0 1 2 3 4 5 6 7 8 9 不是第一个数字是子串在原串的开始位置 不是6吗?
大约 2 年之前 回复
caozhy
caozhy 回复pri310: 那就是了,SubString的下标是从0开始的。.Substring(5, 4);
大约 2 年之前 回复
sinat_34773351
sinat_34773351 知识点的编号是10个字符 固定的
大约 2 年之前 回复
CSDNXIAOD
CSDNXIAOD   2016.05.11 00:22

startIndex 不能大于字符串长度。 参数名: startIndex
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

havedream_one
havedream_one   2016.05.11 08:03

其实是Substring这个方法没搞懂,看看这个方法的介绍

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
startIndex 不能大于字符串长度。 参数名: startIndex
项目编译出现的问题,没有指定文件,没有指定项目。同一个项目在其他人那里下载的代码没有问题,在我这里下载就会出现这样的问题。 整个解决方法里的每一个项目单独生成都没有问题,要是整体生成就会出现这个错误,虽然不影响工作,但是有错误总让人觉得不踏实。 希望有高人能够给我点提示。发帖
substring()的用法——c#
String.Substring(int startIndex) 返回一个从startIndex开始到结束的子字符串 String.Substring(int startIndex, int length) ,或返回一个从startIndex开始,长度为length的子字符串。
定义一个长度大于5,包含字符‘@’的字符串,完成如下操作......(foreach及各种函数的用法)
foreach的用法以及各种函数的用法{ //定义一个长度大于5,包含字符‘@’的字符串,完成如下操作:(1)输出字符串的长度。(2)输出字符串中第一个数字“3”出现的位置。 //(3)在字符串第四个字符后面插入子字符串“辽宁”,并输出新的字符串。(4)将新字符串中的“辽宁”替换为“锦州”,并输出新的字符串。 //(5)以字符‘
String中subString(int start,int end) index的问题
这个问题每次遇到很烦的时候就说明,问题虽然小,但是确实没理解明白,试来试去,还是源码解决最靠谱。/** * Returns a string containing the given subsequence of this string. * The returned string shares this string's <a href="#backing_array">bac
关于IOS判断字符串长度的方法
NSString *text=@"helloworld你好吗";//16 NSUInteger length= text.length; NSUInteger length2=[text lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; NSLog(@"length=%lu,length2=%lu,length3=%lu",
linux shell 获取字符串长度,空字符串判断
计算字符串长度可用的4种方法:  echo “$str”|awk '{print length($0)}'  expr length “$str”  echo “$str”|wc -c  但是第三种得出的值会多1,可能是把结束符也计算在内了    array 为数组 length=${#array[@]}  echo $length 可得数组个数
string进阶字符串分割String.Split
String.Split 方法有6个重载函数: 程序代码 1) public string[] Split(params char[] separator) 2) public string[] Split(char[] separator, int count) 3) public string[] Split(char[] separator, StringSplitOptions o
在数据库中,查询出xxx中字符串长度大于多少的记录
这个是 名字中不包含shelter的 且字符长度大于等于15的 SELECT *  FROM `t_role` WHERE NAME NOT LIKE CONCAT('shelter','%') AND LENGTH(NAME)>=15
js--小demo--字符串长度判断,超出进行自动截取(支持中文)
// 若真是长度大于10,也就是中文5个 if (GetLength(c.label) > 10) { var label = cutstr(c.label, 10); $item.find('.text').text(label);}else { $item.find('.text').text(c.label); }var GetLength = function
利用正则表达式来设置最大输入字符长度
在做机房合作的时候,很多东西都进行了“改革”,听二牛说输入的字符长度限制可以用正则表达式,当然限制字符长度不仅可以用这种方法来写,还有通过设置文本框属性等办法来解决。不过利用正则表达式,我还是没没想到。反正正则表达式都学过了,为什么不能拿过来用呢?让它和我原来的方法比试比试。 一、ascii码小试 之前的代码是利用ascii码来编写的: '限制输入的字符长度为0-16之间 Private S