以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]单列数据拆分多列,数字拆分取值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133986)

--  作者:冷诺
--  发布时间:2019/4/24 17:31:00
--  [求助]单列数据拆分多列,数字拆分取值
请问老师,单列数值分拆成多列数据的问题,列名:号码     里面的数据格式是13-2-0904,代表13号楼2单元09层04号房间,我想把一列变成多列
我在表事件里用代码
If e.DataCol.name = "号码"
    If e.newvalue > ""
        Dim ar() As String = e.newvalue.split("-")
e.DataRow("楼号") = ar(0)
e.DataRow("单元号") = ar(1)
e.DataRow("房号") = ar(2)
    End If
End If

把楼号、单元号都拆出来了,但是0904这没有分隔符的只能整个拆到一列里,该如何修改代码可以继续拆分到层数、房间两列里(四位数前两位代表层数,后两位代表房间号)

老师很抱歉,我点击添加附件没反应,只能这么口述了

--  作者:有点甜
--  发布时间:2019/4/24 17:36:00
--  

参考代码

 

Dim str As String = "13-2-0904"
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "([0-9]+)-([0-9]+)-([0-9]{2})([0-9]{2})")
msgbox(mc(0).groups(0).value)
msgbox(mc(0).groups(1).value)
msgbox(mc(0).groups(2).value)
msgbox(mc(0).groups(3).value)
msgbox(mc(0).groups(4).value)


--  作者:冷诺
--  发布时间:2019/4/24 21:42:00
--  
甜老师,我能看懂您给的参考代码,但是我取前面几个的时候是写在表属性的datacolchanged事件里,如果还写在里面,我应该如何修改代码呢,我现在的效果是把后面的4位数给取到单独的一列,用的代码
If e.DataCol.name = "号码"
    If e.newvalue > ""
        Dim ar() As String = e.newvalue.split("-")

e.DataRow("楼号") = ar(0)

e.DataRow("单元号") = ar(1)

e.DataRow("房号") = ar(2)
    End If
End If

--  作者:有点甜
--  发布时间:2019/4/24 21:57:00
--  

 

Dim str As String = e.newvalue
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "([0-9]+)-([0-9]+)-([0-9]{2})([0-9]{2})")
e.DataRow("楼号") = mc(0).groups(1).value

e.DataRow("单元号") = mc(0).groups(2).value