以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 字符串提取 (http://foxtable.net/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编辑过]
|