以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教在字符串中提取特定文字 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=24767) |
||||
-- 作者:szp2012 -- 发布时间:2012/10/22 20:19:00 -- 请教在字符串中提取特定文字 [upload=xls,book1.xls]viewFile.asp?ID=21650[/uploajian 见附件。 A列为备注文字,整体无规律,但内中含有“零壹贰..玖”中文大写和“/吨”,如“零伍/吨”,但是前后文字无规律。 B列为转化第一步,提取备注中的类似“零伍/吨”的子字符串, C类讲将B列转为“05”(“/吨”删去) d列将C列转为 数值。注意 一位数“ 1”转为 100,两位:43转为 430 05转为50 规律类推。 如直接的将A列转为 100,430等数值也可。 请教如何处理
[此贴子已经被作者于2012-10-22 20:20:26编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/10/22 20:55:00 -- 这问题不简单的:
|
||||
-- 作者:程兴刚 -- 发布时间:2012/10/22 20:58:00 -- 提示:用逗号分割,舍去0段不要,2段不要,取1段,在用“/"分割,取0段或直接替换掉"/吨",得到的结果转换为数值,其他的留给您来做作业! |
||||
-- 作者:szp2012 -- 发布时间:2012/10/22 21:17:00 --
[此贴子已经被作者于2012-10-23 0:11:32编辑过]
|
||||
-- 作者:szp2012 -- 发布时间:2012/10/22 23:19:00 -- 继续请教 1.如果备注字符串中不含“零...玖”等大写中文则出错,请问如何修正代码 2.我欲将此事件转为按钮代码,e.newvalue 不知如何替代 3自提,粤AF9437/AF9513/AF9517/A8C156/A12108/AR4136,零伍/吨.得出结果943700 错 4.自提粤A57M37陈满福/伍伍零/吨 其中中文大写不论多少都得出5700 错 貌似其中有 0-9 数字对判断有干扰,请版主修正 谢谢 或者我有想法: 1.直接判断每个字是否属于大写“零...玖“ 加入到新建数组中 2.把数组逐个替换成”0-9“并重组 05 65 17 3.判断转值 如 05转成 50 65转650 但不知代码如何写 [此贴子已经被作者于2012-10-23 0:02:52编辑过]
|
||||
-- 作者:飞 -- 发布时间:2012/10/23 10:42:00 -- 呵呵,这个貌似得用正则,不知道论坛有没有精通正则的人 |
||||
-- 作者:lin_hailun -- 发布时间:2012/10/23 14:12:00 -- 截取字符串这样,剩下的,楼主要自己努力咯。 Dim data As String = "福建阿里上看到附件sdkfj零壹贰叁肆伍陆柒捌玖/吨控件" Dim catchs As New System.Text.RegularExpressions.Regex("[\\u96f6\\u58f9\\u8d30\\u53c1\\u8086\\u4f0d\\u9646\\u67d2\\u634c\\u7396]+(/\\u5428){1}") Dim mc As System.Text.RegularExpressions.MatchCollection = catchs.Matches(data) If mc.Count <> 0 Then msgbox(mc(0).Value.SubString(0, mc(0).Value.IndexOf("/"))) End If [此贴子已经被作者于2012-10-23 14:24:25编辑过]
|
||||
-- 作者:szp2012 -- 发布时间:2012/10/23 20:02:00 -- 看不懂 |
||||
-- 作者:szp2012 -- 发布时间:2012/10/23 20:47:00 -- 我估计问题的关键是字符串中“0-9”数字干扰是关键,所以先行踢去“0-9” 请狐爸修改一下代码 期盼 Case "第一列" [此贴子已经被作者于2012-10-23 20:48:02编辑过]
|
||||
-- 作者:lin_hailun -- 发布时间:2012/10/24 11:56:00 -- 呃……代码这样写。测试有效。 For Each dr As DataRow In DataTables("表A").DataRows Dim data As String = dr("第一列") Dim catchs As New System.Text.RegularExpressions.Regex("[\\u96f6\\u58f9\\u8d30\\u53c1\\u8086\\u4f0d\\u9646\\u67d2\\u634c\\u7396]+(/\\u5428){1}") Dim mc As System.Text.RegularExpressions.MatchCollection = catchs.Matches(data) If mc.Count <> 0 Then Dim val As String = mc(0).Value.SubString(0, mc(0).Value.IndexOf("/")) \'得到的大写数值 Dim chs As String = "零壹贰叁肆伍陆柒捌玖" Dim nbs As String = "0123456789" Dim num As Double = 0 Select Case val.Length Case 1 num = nbs(chs.IndexOf(val)).ToString() * 100 Case Else If val(0) = "零" Then For i As Integer = 1 To val.Length - 1 num = num + nbs(chs.IndexOf(val(i))).ToString() * 10 ^ (2-i) Next Else For i As Integer = 0 To val.Length - 1 num = num + nbs(chs.IndexOf(val(i))).ToString() * 10 ^ (val.Length-i) Next End If End Select dr("第二列") = num End If Next [此贴子已经被作者于2012-10-24 12:00:46编辑过]
|