以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  字符串提取  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=37689)

--  作者:sddcyj
--  发布时间:2013/7/8 15:56:00
--  字符串提取
如何能够把“张三0016ecb78f9c”  “张三三0016ecb78091” 等样式的字符串中的 后面的0016ecb78091提取出来?
--  作者:Bin
--  发布时间:2013/7/8 16:01:00
--  
前半部分中文 不会变?  后半部分英文+数字?
--  作者:Bin
--  发布时间:2013/7/8 16:13:00
--  
其实你这个需求用空格区分一下不是能很简单的解决吗?
--  作者:sddcyj
--  发布时间:2013/7/8 16:14:00
--  
对 前半部分或是三个中文或是二个中文 后半部分肯定是12个数字或字母
--  作者:Bin
--  发布时间:2013/7/8 16:17:00
--  
Dim s As String="张三三0016ecb78f9c"
Dim name As String= System.Text.RegularExpressions.Regex.Match(s,"[\\u4e00-\\u9fa5]+").ToString()
Dim code As String = System.Text.RegularExpressions.Regex.Match(s,"[0-9a-zA-Z]+").ToString()
MessageBox.show("姓名: " & name  & "      " & "卡号:  " & code)

--  作者:lsy
--  发布时间:2013/7/8 16:17:00
--  

如果后面非汉字部分的长度不变,就简单了:

Dim s As String

For Each r As Row In e.Table.Rows

    s = Right(r("字符串列"),12)

Next


--  作者:FOTOER
--  发布时间:2013/7/8 16:24:00
--  
以下是引用sddcyj在2013-7-8 16:14:00的发言:
对 前半部分或是三个中文或是二个中文 后半部分肯定是12个数字或字母

提供个思路探讨。

dim s as string

select case s.length

    case 14 ‘获取字符串长度,如果是14位,

         s.SubString(s.Length -2)  ’获取字符串右侧12位

    case 15  ‘如果是15位 

         s.SubString(s.Length -3)   ’获取字符串右侧12位

end select

没有运行,仅供参考


--  作者:FOTOER
--  发布时间:2013/7/8 16:25:00
--  
可参考帮助的“字符串概述”
--  作者:jweishan
--  发布时间:2013/7/10 3:01:00
--  
Dim str As String = "张三三0016ecb78091"
If str <> "" Then
    Dim n As Integer = str.Length - 1
    Dim ID As String = ""
    Dim Name As String = ""
    For i = 0 To n
        If str.Chars(i) Like "[0-9]" Then
            ID = ID & str.Chars(i)
        ElseIf str.Chars(i) Like "[a-x]" Then
            ID = ID & str.Chars(i)
        Else
            Name = Name & str.Chars(i)
        End If
    Next
    ID = ID.Trim
    Name = Name.Trim
    Output.Show(Name)
    Output.Show(ID)
End If

这个办法笨一点,但是好懂,且不受字符数和顺序的限制!自动分拣
[此贴子已经被作者于2013-7-10 3:03:53编辑过]