以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助:复杂的字符拆分代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=108619)

--  作者:刘异
--  发布时间:2017/10/26 9:45:00
--  求助:复杂的字符拆分代码
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:字符拆分.rar

老师,帮忙看一下,怎么写代码,我弄了2天,没有做出来。
多谢!!

--  作者:刘异
--  发布时间:2017/10/26 9:46:00
--  
图片如下:
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20171026093904.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/10/26 10:56:00
--  

参考代码

 

Dim str As String = "P1234567890123456781T987654321Q0005000"
Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "T[0-9]+|P[0-9]+|Q[0-9]+")
If mc.count = 3 Then
    For i As Integer = 0 To mc.count-1
        Dim v = mc(i).value
        If v.startswith("P") Then
            msgbox("产品" & v.Substring(1))
        ElseIf v.startswith("T") Then
            msgbox("批次" & v.Substring(1))
        ElseIf v.startswith("Q") Then
            msgbox("数量" & v.Substring(1))
        End If
    Next
End If


--  作者:刘异
--  发布时间:2017/10/27 17:29:00
--  
老师好:
直接提取:P后面的18位,T后面的9位,Q后面的7位;分别填入,产品编号,批次编号、数量列应该怎么写代码呢?

多谢!

--  作者:有点甜
--  发布时间:2017/10/27 17:56:00
--  
If e.DataCol.name = "条码编号" Then
    Dim str As String = e.NewValue
    If str > "" Then
        Dim mc = System.Text.RegularExpressions.Regex.Matches(str, "T[0-9]+|P[0-9]+|Q[0-9]+")
        If mc.count = 3 Then
            For i As Integer = 0 To mc.count-1
                Dim v = mc(i).value
                If v.startswith("P") Then
                    e.DataRow("产品编号") = v.Substring(1)
                ElseIf v.startswith("T") Then
                    e.DataRow("批次编号") = v.Substring(1)
                ElseIf v.startswith("Q") Then
                    e.DataRow("数量") = v.Substring(1)
                End If
            Next
        Else
            e.DataRow("产品编号") = Nothing
            e.DataRow("批次编号") = Nothing
            e.DataRow("数量") = Nothing
        End If
    Else
        e.DataRow("产品编号") = Nothing
        e.DataRow("批次编号") = Nothing
        e.DataRow("数量") = Nothing
    End If
End If