索引和长度必须引用该字符串内的位置。 参数名: length

baidu_24410323 2015-06-08 10:40:55
string s = "(select '人员基本信息表(HI33)','AAE043','',nvl(sum(case when AAE043 is null then 1 end),0),count(1),'空值比例:', nvl(trunc(((sum(case when AAE043 is null then 1 end) / count(1)))*100,2),0) || '%' from HI33)";


string[] b = s.Split(',');


string f = b[0].Substring(b[0].IndexOf("H"), b[0].Length - 2);

Console.WriteLine(f);
...全文
570 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
b[0].IndexOf("H")
缺少是否大于等于0的判断
zj25810 2015-06-08
  • 打赏
  • 举报
回复
你应该是想要HI33这个数据吧 string f = b[0].Substring(b[0].IndexOf("H"), b[0].Length - 2);改为 string f = b[0].Substring(b[0].IndexOf("H"), b[0].Length - b[0].IndexOf("H") - 2); b[0].Length - b[0].IndexOf("H") 除去H之前的 “select '人员基本信息表(”信息 -2 除去“)'”的信息 得到的长度就是H* 这个你想要的数据的长度了。
baidu_24410323 2015-06-08
  • 打赏
  • 举报
回复
谢谢各位,问题解决了
遥望那些年 2015-06-08
  • 打赏
  • 举报
回复
Substring的第二个参数是你要截取的长度,不是结束位置的下标 你的H的index在17,字符串一共长23,b[0].Length - 2的值是21。从字符串第17位开始,取不到总长度为21的子字符串了,后面只有4个可取字符
於黾 2015-06-08
  • 打赏
  • 举报
回复
string f = b[0].Substring(b[0].IndexOf("H"), b[0].Length - 2); 这里传入了2个变量 第一个表示从哪里开始 第二个表示截取的字符串长度 你必须保证截取的长度>0 且开始+长度<总长度 如果字符串长度是10,"H"位于第5个位置 你从5截取,截取8个字符,哪里还有8个字符给你截取
於黾 2015-06-08
  • 打赏
  • 举报
回复
说明b[0].Length - 2错了呗 如果b[0].Length小于2呢???
baidu_24410323 2015-06-08
  • 打赏
  • 举报
回复
string f = b[0].Substring(b[0].IndexOf("H"), b[0].Length - 2);这里提示“索引和长度必须引用该字符串内的位置。 参数名: length”是怎么回事?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧