Foxtable(狐表)用户栏目专家坐堂 → 如何将字符串里面的数字和字母分离出来


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

主题:如何将字符串里面的数字和字母分离出来

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


加好友 发短信
等级:七尾狐 帖子:1505 积分:9756 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2016/12/22 11:36:00 [只看该作者]

谢谢。

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


加好友 发短信
等级:七尾狐 帖子:1505 积分:9756 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/7/31 14:41:00 [只看该作者]

A B
76520-279-32Q_SP 76520-279-32Q
76520-279-03Q_SP 76520-279-03Q
77740-005-70_SP 77740-005-70
77740-005-72_SP 77740-005-72
77740-005-73_SP 77740-005-73
77740-005-55_SP 77740-005-55
77740-005-56 77740-005-56
77740-005-57 77740-005-57

数据表A列部份数据后面三位带有_SP, 我想将这些数据去掉_SP, 变为B列内容,不带_SP的则A列内容不变,直接输入B列。如何写代码?谢谢。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/31 14:46:00 [只看该作者]

If e.datacol.name = "A列" Then

    e.dataRow("B列") = e.DataRow("A列").replace("_SP", "")

End If


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


加好友 发短信
等级:七尾狐 帖子:1505 积分:9756 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/7/31 16:13:00 [只看该作者]

这个代码好,简单,可行。谢谢。

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


加好友 发短信
等级:七尾狐 帖子:1505 积分:9756 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2018/12/24 16:54:00 [只看该作者]

请参考9楼贴出的图片里面的数据:我希望把制造产品号里面字母G和字母S之间的数字(可能是一位和可能是2位数字)抽取出来,放在"长度"这列的单元格里面去,如何写代码?谢谢。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/12/24 17:07:00 [只看该作者]

If e.DataCol.name = "制造产品号" AndAlso e.newvalue > "" Then
    Dim zml() As String = {"字母列1", "字母列2"}
    Dim szl() As String = {"数字列1", "数字列2"}
    Dim s As String = e.newvalue
    Dim p As String = "\d+"
    Dim mc = System.Text.RegularExpressions.Regex.Matches(s, p)
    For i As Integer = 0 To mc.count-1
        e.DataRow(szl(i)) = mc(i).value
    Next
   

    p = "[a-zA-Z]+"
    mc = System.Text.RegularExpressions.Regex.Matches(s, p)
    For i As Integer = 0 To mc.count-1
        e.DataRow(zml(i)) = mc(i).value
    Next

 
    p = "(?<=G)\d+(?=S)"
    mc = System.Text.RegularExpressions.Regex.Matches(s, p)
    For i As Integer = 0 To mc.count-1
        e.DataRow("长度") = mc(i).value
    Next

End If

 回到顶部
总数 16 上一页 1 2