Foxtable(狐表)用户栏目专家坐堂 → 请教在字符串中提取特定文字


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

主题:请教在字符串中提取特定文字

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


加好友 发短信
等级:童狐 帖子:202 积分:1683 威望:0 精华:0 注册:2011/6/17 16:07:00
请教在字符串中提取特定文字  发帖心情 Post By: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等数值也可。

请教如何处理

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:book1.xls

[此贴子已经被作者于2012-10-22 20:20:26编辑过]

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


加好友 发短信
等级:童狐 帖子:202 积分:1683 威望:0 精华:0 注册:2011/6/17 16:07:00
  发帖心情 Post By:2012/10/22 21:17:00 [显示全部帖子]

 

[此贴子已经被作者于2012-10-23 0:11:32编辑过]

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


加好友 发短信
等级:童狐 帖子:202 积分:1683 威望:0 精华:0 注册:2011/6/17 16:07:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:童狐 帖子:202 积分:1683 威望:0 精华:0 注册:2011/6/17 16:07:00
  发帖心情 Post By:2012/10/23 20:02:00 [显示全部帖子]

看不懂

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


加好友 发短信
等级:童狐 帖子:202 积分:1683 威望:0 精华:0 注册:2011/6/17 16:07:00
  发帖心情 Post By:2012/10/23 20:47:00 [显示全部帖子]

我估计问题的关键是字符串中“0-9”数字干扰是关键,所以先行踢去“0-9”

 请狐爸修改一下代码 期盼

 Case "第一列"
        If e.DataRow.Isnull("第一列")  Then
            e.DataRow("第三列")  = Nothing
        Else
          
            Dim nm1 As String = "零壹贰叁肆伍陆柒捌玖"
           Dim nm2 As String = "0123456789"
            'For i As Integer = 0 To 9
                'vs = vs.replace(nm1(i),nm2(i))
           ' Next
        Dim vs As String = e.NewValue
            For Each c As Char In vs
              
                Dim v As String
                     If Char.IsDigit(c) =False  Then
                    v = v & c
                'ElseIf v > "" Then
                   ' Exit For
                End If
            Next
         e.DataRow(第三列")  = cv
     End If
'            Dim v As String
'            Dim s As Double
'       For Each c1 As Char In vs
'                If m1.contain(c) Then
'                   Dx().add(c1)
'               End If
'                 
'
'
'
'
'                       s = v
'            For Each c As Char In v
'                If c = "0" Then
'                    s = s / 10
'                Else
'                    Exit For
'                End If
'            Next
'            If s<10 Then
'                e.DataRow("第二列")  = s * 100
'            Else
'                e.DataRow("第二列")  = s * 10
'            End If
'        End If   
'           
 End Select

[此贴子已经被作者于2012-10-23 20:48:02编辑过]

 回到顶部