以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教字符串分拆,一列分成两列 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179943) |
-- 作者:13315253800 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2022/9/19 22:30:00 -- 谢谢老师!我太粗心了 |
-- 作者:13315253800 -- 发布时间:2022/9/20 10:13:00 -- 蓝老师,如果地址与电话号码之间没有空格,只是汉字与阿拉伯数字的区别能用代码分拆为两列吗?我现在是用手工添加空格再执行上面的代码,有点麻烦。请教蓝老师 |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2022/9/20 10:31:00 -- 好,我试试 |
-- 作者:13315253800 -- 发布时间: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 |