以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]返回字符串长度出错  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=69686)

--  作者:青鸟
--  发布时间:2015/6/9 13:43:00
--  [求助]返回字符串长度出错
下面代码中,红色部分报错:索引和长度必须引用该字符串内的位置。参数名: length。请问,为什么,怎么修改?
    Dim xmmcjh As New List(Of String()) \'项目名称_集合
    xmmcjh = DataTables("合同or费用台账").GetValues("项目代码|子项目代码") \'列名用符号|分割_集合
    For Each xmmcsz As String() In xmmcjh \'项目名称_数组
        Dim xmmc As String
        xmmc = String.join("|",xmmcsz)
        msgbox(xmmc)
        Dim xmdm As String \'项目代码
        Dim zxmdm As String \'子项目代码
        Dim wzz As Integer \'| 出现位置长度
        Dim l As Integer \'
        wzz = xmmc.IndexOf("|")
        msgbox(wzz)
        l = xmmc.Length
        xmdm = xmmc.SubString(0,wzz)
        zxmdm = xmmc.SubString(wzz + 1,l)
        msgbox(xmdm)
        msgbox(zxmdm)
   next

--  作者:Bin
--  发布时间:2015/6/9 14:03:00
--  
xmdm = xmmc.SubString(0,wzz)
        zxmdm = xmmc.SubString(wzz + 1,l)

错误代码是这两句 

你用SUbstring的话.要确保字符足够长.  否则你字符串长度为5 你要切割 1-10的字符串.肯定报错

加入if 判断

if xmmc.length >wzz then
 mdm = xmmc.SubString(0,wzz)
end if
if xmmc.length >=(wzz+1+I) then
 zxmdm = xmmc.SubString(wzz + 1,l)
end if

--  作者:大红袍
--  发布时间:2015/6/9 14:03:00
--  

zxmdm = xmmc.SubString(wzz + 1,l)

 

改成

 

zxmdm = xmmc.SubString(wzz + 1)


--  作者:青鸟
--  发布时间:2015/6/9 14:56:00
--  
谢谢Bin,谢谢大红袍,基础太差,出点错就不知所以。