以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]从一个字符串中提取特定字符的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=11721) |
|
-- 作者:dlovef -- 发布时间:2011/8/9 11:13:00 -- [求助]从一个字符串中提取特定字符的问题 有没有什么办法能够从诸如"一二三四五AAA00000六七八"这样的字符串中将“AAA00000”提取出来。 1,“AAA00000”格式固定,三位字母,五位数字 2,“AAA00000”出现位置不固定 |
|
-- 作者:yanzhen2010 -- 发布时间:2011/8/9 11:31:00 -- 以下是引用dlovef在2011-8-9 11:13:00的发言:
有没有什么办法能够从诸如"一二三四五AAA00000六七八"这样的字符串中将“AAA00000”提取出来。 1,“AAA00000”格式固定,三位字母,五位数字
2,“AAA00000”出现位置不固定
,“AAA00000”后边的字符个数固定吗? |
|
-- 作者:狐狸爸爸 -- 发布时间:2011/8/9 11:43:00 -- Dim s As String = "一二三四五AAA00000六七八" Dim i1 As Integer Dim i2 As Integer For i As Integer = 0 To s.Length -3 If s(i) = s(i+1) AndAlso s(i) = s(i+2) Then i1 = i Exit For End If Next For i As Integer = 0 To s.Length -5 If s(i) = s(i+1) AndAlso s(i) = s(i+2) AndAlso s(i) = s(i+3) AndAlso s(i) = s(i+4) Then i2 = i Exit For End If Next If i2 > i1 Then messagebox.show(s.SubString(i1,8)) End If [此贴子已经被作者于2011-8-9 11:47:20编辑过]
|
|
-- 作者:狐狸爸爸 -- 发布时间:2011/8/9 11:46:00 -- 可以看看.net的正则表达式,会更简单点。 |
|
-- 作者:dlovef -- 发布时间:2011/8/9 11:48:00 -- 回复yanzhen2010:后面的字数也不固定。 回复狐狸爸爸:"AAA00000"只是个样式,AAA代表任意三位字母,00000代表任意五位数字。所以您的这段代码好像行不通吧。
|
|
-- 作者:狐狸爸爸 -- 发布时间:2011/8/9 11:50:00 -- 这样简单点:
Dim s As String = "一二三四五AAA00000六七八" |
|
-- 作者:dlovef -- 发布时间:2011/8/9 12:21:00 --
|
|
-- 作者:狐狸爸爸 -- 发布时间:2011/8/9 12:27:00 -- Dim s As String = "一二三四五AAA00000六七八" For i As Integer = 0 To s.Length - 8 If Char.IsLetter(s(i)) AndAlso s(i) = s(i+1) AndAlso s(i) = s(i+2) Then If Char.IsDigit(s(i+3)) AndAlso s(i+3) = s(i+4) AndAlso s(i+3) = s(i+5) AndAlso s(i+3) = s(i+6) AndAlso s(i+3) = s(i+7) Then messagebox.show(s.SubString(i,8)) Exit For End If End If Next |
|
-- 作者:xongyijd -- 发布时间:2011/8/9 12:29:00 -- 以下是引用狐狸爸爸在2011-8-9 11:50:00的发言:
这样简单点:
Dim s As String = "一二三四五AAA00000六七八" 弄糊涂了,狐狸爸爸能不能用解释含义 |
|
-- 作者:dlovef -- 发布时间:2011/8/9 13:02:00 -- 狐爸,以下代码执行后结果是这样的?请问是什么原因? Dim s As String = "一二三四五AAA00000六七八" Dim str As String For i As Integer = 1 To s.Length-8 str = Mid(s,i,8) If Char.IsLetter(Left(str,3)) And Char.IsNumber(Right(str,5)) Then Output.Show(str) End If Next 结果
|