Foxtable(狐表)用户栏目专家坐堂 → 请教字符串分拆,一列分成两列


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

主题:请教字符串分拆,一列分成两列

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4392 威望:0 精华:0 注册:2018/1/3 16:03:00
请教字符串分拆,一列分成两列  发帖心情 Post By:2022/9/19 21:59:00 [只看该作者]

请教字符串分拆,一列分成两列

字符列“地址电话”包含地址和电话,中间用空格相隔,想通过代码得出“地址”和“电话”两列。下面代码出现错误,请老师指导

If e.DataCol.Name = "地址电话" Then '是地址电话发生变化吗?

    If e.DataRow.IsNull("地址电话") Then '地址电话是否为空

        e.DataRow("地址") = Nothing '如果为空,则清除地址

        e.DataRow("电话") = Nothing '如果为空,则电话

    Else

        Dim dr As DataRow = e.DataRow

        Dim Tel As String = e.DataRow("地址电话")

        Dim Parts() As String = Tel.Split(" ")

        dr("地址") = Parts(0)) '否则从地址电话列中提取地址

        dr("电话") = Parts(1)) '否则从地址电话列中提取电话

    End If

End If


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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/19 22:06:00 [只看该作者]

   Else

        Dim dr As DataRow = e.DataRow

        Dim Tel As String = dr("地址电话")

        Dim Parts() As String = Tel.Split(" ")

        dr("地址") = Parts(0) '否则从地址电话列中提取地址

if Parts.length > 1

        dr("电话") = Parts(1) '否则从地址电话列中提取电话

end if

    End If

End If

[此贴子已经被作者于2022/9/19 22:06:05编辑过]

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4392 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2022/9/19 22:30:00 [只看该作者]

谢谢老师!我太粗心了

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4392 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2022/9/20 10:13:00 [只看该作者]

蓝老师,如果地址与电话号码之间没有空格,只是汉字与阿拉伯数字的区别能用代码分拆为两列吗?我现在是用手工添加空格再执行上面的代码,有点麻烦。请教蓝老师

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


加好友 发短信
等级:超级版主 帖子:111427 积分:567211 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/9/20 10:23:00 [只看该作者]

试试

Dim s As String = "广东省湛江市13013013000"
Dim p As String = "\d+"
Dim r As New System.Text.RegularExpressions.Regex(p)
Dim str() As String = r.Split(s)
Output.Show(str(0))
Output.Show(s.Replace(str(0), ""))

但是如果地址有数字,比如【3栋503方】,或者电话里有字符,比如【0759-2111111】就不好办了

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4392 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2022/9/20 10:31:00 [只看该作者]

好,我试试

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


加好友 发短信
等级:三尾狐 帖子:603 积分:4392 威望:0 精华:0 注册:2018/1/3 16:03:00
  发帖心情 Post By:2022/9/20 10:54:00 [只看该作者]

蓝老师,地址确实有数字。按您提示的方法我用在了“开户行及账号”列,拆分为“开户行”、“银行账号”两列。成功了代码如下
'字符串分拆,一列分成两列
If e.DataCol.Name = "开户行及账号" Then '发生变化列
    If e.DataRow.IsNull("开户行及账号") Then '是否为空    
        e.DataRow("开户行") = Nothing '如果为空,则清除    
        e.DataRow("银行账号") = Nothing '如果为空,则清除    
    Else
        Dim dr As DataRow = e.DataRow 
        Dim s As String = dr("开户行及账号")
        Dim p As String = "\d+"
        Dim r As New System.Text.RegularExpressions.Regex(p)
        Dim str() As String = r.Split(s) 
        dr("开户行") = str(0) '否则从开户行及账号列中提取开户行    
        dr("银行账号") = s.Replace(str(0),"")'否则从开户行及账号列中提取银行账号        
    End If
End If

 回到顶部