Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共23 条记录, 每页显示 10 条, 页签: [1] [2][3]
[浏览完整版]

标题:[求助]从一个字符串中提取特定字符的问题

1楼
dlovef 发表于:2011/8/9 11:13:00
有没有什么办法能够从诸如"一二三四五AAA00000六七八"这样的字符串中将“AAA00000”提取出来。
1,“AAA00000”格式固定,三位字母,五位数字
2,“AAA00000”出现位置不固定

2楼
yanzhen2010 发表于:2011/8/9 11:31:00
以下是引用dlovef在2011-8-9 11:13:00的发言:
有没有什么办法能够从诸如"一二三四五AAA00000六七八"这样的字符串中将“AAA00000”提取出来。
1,“AAA00000”格式固定,三位字母,五位数字
2,“AAA00000”出现位置不固定

,“AAA00000”后边的字符个数固定吗?

3楼
狐狸爸爸 发表于: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编辑过]
4楼
狐狸爸爸 发表于:2011/8/9 11:46:00
可以看看.net的正则表达式,会更简单点。
5楼
dlovef 发表于:2011/8/9 11:48:00
回复yanzhen2010:后面的字数也不固定。
回复狐狸爸爸:"AAA00000"只是个样式,AAA代表任意三位字母,00000代表任意五位数字。所以您的这段代码好像行不通吧。
6楼
狐狸爸爸 发表于:2011/8/9 11:50:00

这样简单点:

 

Dim s As String  = "一二三四五AAA00000六七八"
For i As Integer = 0 To s.Length -3
    If s(i) = s(i+1) AndAlso s(i) = s(i+2) Then
        If 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

7楼
dlovef 发表于:2011/8/9 12:21:00
回复狐狸爸爸:"AAA00000"只是个样式,AAA代表任意三位字母,00000代表任意五位数字。所以您的这段代码好像行不通吧。

8楼
狐狸爸爸 发表于: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
9楼
xongyijd 发表于:2011/8/9 12:29:00
以下是引用狐狸爸爸在2011-8-9 11:50:00的发言:

这样简单点:

 

Dim s As String  = "一二三四五AAA00000六七八"
For i As Integer = 0 To s.Length -3
    If s(i) = s(i+1) AndAlso s(i) = s(i+2) Then
        If 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

弄糊涂了,狐狸爸爸能不能用解释含义

10楼
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

结果

图片点击可在新窗口打开查看此主题相关图片如下:截图05.jpg
图片点击可在新窗口打开查看

共23 条记录, 每页显示 10 条, 页签: [1] [2][3]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .05469 s, 2 queries.