Foxtable(狐表)用户栏目专家坐堂 → [求助]单列数据拆分多列,数字拆分取值


  共有2948人关注过本帖树形打印复制链接

主题:[求助]单列数据拆分多列,数字拆分取值

帅哥哟,离线,有人找我吗?
冷诺
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:35 积分:480 威望:0 精华:0 注册:2015/11/27 0:39:00
[求助]单列数据拆分多列,数字拆分取值  发帖心情 Post By: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这没有分隔符的只能整个拆到一列里,该如何修改代码可以继续拆分到层数、房间两列里(四位数前两位代表层数,后两位代表房间号)

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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)


 回到顶部
帅哥哟,离线,有人找我吗?
冷诺
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:35 积分:480 威望:0 精华:0 注册:2015/11/27 0:39:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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



 


 回到顶部