VB中如何实现文本查找功能?
2个回答
2013-12-12
展开全部
实现查找功能的关键在于使用InStr函数,这个函数可以找到指定的字符串在另一字符串中最先出现的位置。我们先来看一看使用这个函数的语法:
InStr([start, ]string1, string2[, compare])
这个函数需要的的参数是起始位置、主体字符串、要查找的字符串;Compare是可选参数。指定字符串比较。此compare参数是可以省略的,也可以是 0, 1或 2。指定0(缺省)做二进制比较。指定1做不区分大小写的文本比较。例如我们要查找在字符串“abcdefg”中是否存在“cd”并返回其位置,则使用下面的语句就可以实现: pos=InStr(1,"abcdefg","cd")
则pos会返回3表示查找到并且位置为第三个字符开始。这就是“查找”的实现,而“查找下一个”功能的实现就是把当前位置作为起始位置继续查找。
下面举例说明:
放置一个文本框TEXT1供用户输入文本或调入文本文件,用来做在其中查找文本的验证,放置另一个文本框TEXT2供用户输入要查找的字符串,放置两个命令按钮,Command1、Command2,其标题分别为“查找”、“查找下一个”。
在窗体的总体声明部分写如下代码 :
Option Explicit '定义目标位置变量
Private TargetPosition As Integer
'编写一个查找函数
Private Sub FindText(ByVal start_at As Integer)
Dim pos As Integer
Dim target As String
'获取用户输入的要查找的字符串
target = text2.Text
pos = InStr(start_at, text1.Text, target)
If pos > 0 Then
'找到了匹配字符串
TargetPosition = pos
text1.SelStart = TargetPosition - 1
'选中找到的字符串
text1.SelLength = Len(target)
text1.SetFocus
Else '没有找到匹配的字符串
MsgBox "没找到!"
text1.SetFocus
End If
End Sub
'双击“查找”命令按钮:
Private Sub command1_Click() '从第一个字符处开始查找
FindText 1
End Sub
'双击“查找下一个”按钮:
Private Sub command2_Click() '从当前位置继续查找
FindText TargetPosition + 1
End Sub
运行程序,在文本框1中输入一些字符串,在文本框2中输入要查找的字符串,单击 “查找”按钮和“查找下一个”按钮进行验证。
InStr([start, ]string1, string2[, compare])
这个函数需要的的参数是起始位置、主体字符串、要查找的字符串;Compare是可选参数。指定字符串比较。此compare参数是可以省略的,也可以是 0, 1或 2。指定0(缺省)做二进制比较。指定1做不区分大小写的文本比较。例如我们要查找在字符串“abcdefg”中是否存在“cd”并返回其位置,则使用下面的语句就可以实现: pos=InStr(1,"abcdefg","cd")
则pos会返回3表示查找到并且位置为第三个字符开始。这就是“查找”的实现,而“查找下一个”功能的实现就是把当前位置作为起始位置继续查找。
下面举例说明:
放置一个文本框TEXT1供用户输入文本或调入文本文件,用来做在其中查找文本的验证,放置另一个文本框TEXT2供用户输入要查找的字符串,放置两个命令按钮,Command1、Command2,其标题分别为“查找”、“查找下一个”。
在窗体的总体声明部分写如下代码 :
Option Explicit '定义目标位置变量
Private TargetPosition As Integer
'编写一个查找函数
Private Sub FindText(ByVal start_at As Integer)
Dim pos As Integer
Dim target As String
'获取用户输入的要查找的字符串
target = text2.Text
pos = InStr(start_at, text1.Text, target)
If pos > 0 Then
'找到了匹配字符串
TargetPosition = pos
text1.SelStart = TargetPosition - 1
'选中找到的字符串
text1.SelLength = Len(target)
text1.SetFocus
Else '没有找到匹配的字符串
MsgBox "没找到!"
text1.SetFocus
End If
End Sub
'双击“查找”命令按钮:
Private Sub command1_Click() '从第一个字符处开始查找
FindText 1
End Sub
'双击“查找下一个”按钮:
Private Sub command2_Click() '从当前位置继续查找
FindText TargetPosition + 1
End Sub
运行程序,在文本框1中输入一些字符串,在文本框2中输入要查找的字符串,单击 “查找”按钮和“查找下一个”按钮进行验证。
2013-12-12
展开全部
在VB中要实现查找文件功能,我们可以利用VB的DIR函数进行递归来实现。每次使用DIR函数后,比较是否有要查找的文件,再检查是否有子目录,若有,利用递归继续查找,这样可对整个盘进行查找。
下面是一个例子,查找DOS目录下的所有EXE文件,统计EXE文件的数目并列出文件名。本程序会查找当前路径下的所有文件和子目录,与WIN95的“包含子文件夹”的查找功能类似。
程序与注释如下:
1.在窗体中加一命令按钮Command1,Caption=查找示例,双击此按钮,写如下代码:
Private Sub Command1-Click()
Dim ff() As String′定义一个字符串数组用来保存找到的文件名称
Dim fn As Long′保存找到的文件数目
fn=TreeSearch(″C:%%dos″,″*.exe″,ff())
Print″找到文件数目为″;fn
For I=1 To fn
Print ff(I)
Next
End Sub
2.插入一模块Modulel.bas,写如下代码:
Option Explicit
Public Function TreeSearch(ByVal sPath As String,ByVal sFileSpec As String,sFiles() As String)
As Long
Static 1Files As Long′文件数目
Dim sDir As String
Dim sSubDirs() As String′存放子目录名称
Dim 1Index As Long
If Right(sPath,1)<>″%%″Then sPath=sPath&″%%″
sDir=Dir(sPath & sFileSpec)
′获得当前目录下文件名和数目
Do While Len(sDir)
1Files=1Files+1
ReDim Preserve sFiles(1 To 1Files)
sFiles(1Files)=sPath&sDir
sDir=Dir
Loop
′获得当前目录下的子目录名称
1Index=0
sDir=Dir(sPath&″*.*″,16)
Do While Len(sDir)
If Left(sDir,1)<>″.″Then ′skip.and..
′找出子目录名
If GetAttr(sPath & sDir)And vbDirectory Then
1Index=lIndex +1
′保存子目录名
Redim Preserve sSubDirs(1 To 1Index)
sSubDirs(1Index)=sPath & sDir &″%%″
End If
End If
sDir=dir
Loop
For 1Index=1 To 1Index
′查找每一个子目录下文件,这里利用了递归
Call TreeSearch(sSubDirs(1Index),sFileSpec,sFiles())
Next 1Index
TreeSearch=1Files
End Function
3.保存文件,按F5运行,单击命令按钮即可。
程序运行环境:VB 4.0 (32位),中文WIN95。
下面是一个例子,查找DOS目录下的所有EXE文件,统计EXE文件的数目并列出文件名。本程序会查找当前路径下的所有文件和子目录,与WIN95的“包含子文件夹”的查找功能类似。
程序与注释如下:
1.在窗体中加一命令按钮Command1,Caption=查找示例,双击此按钮,写如下代码:
Private Sub Command1-Click()
Dim ff() As String′定义一个字符串数组用来保存找到的文件名称
Dim fn As Long′保存找到的文件数目
fn=TreeSearch(″C:%%dos″,″*.exe″,ff())
Print″找到文件数目为″;fn
For I=1 To fn
Print ff(I)
Next
End Sub
2.插入一模块Modulel.bas,写如下代码:
Option Explicit
Public Function TreeSearch(ByVal sPath As String,ByVal sFileSpec As String,sFiles() As String)
As Long
Static 1Files As Long′文件数目
Dim sDir As String
Dim sSubDirs() As String′存放子目录名称
Dim 1Index As Long
If Right(sPath,1)<>″%%″Then sPath=sPath&″%%″
sDir=Dir(sPath & sFileSpec)
′获得当前目录下文件名和数目
Do While Len(sDir)
1Files=1Files+1
ReDim Preserve sFiles(1 To 1Files)
sFiles(1Files)=sPath&sDir
sDir=Dir
Loop
′获得当前目录下的子目录名称
1Index=0
sDir=Dir(sPath&″*.*″,16)
Do While Len(sDir)
If Left(sDir,1)<>″.″Then ′skip.and..
′找出子目录名
If GetAttr(sPath & sDir)And vbDirectory Then
1Index=lIndex +1
′保存子目录名
Redim Preserve sSubDirs(1 To 1Index)
sSubDirs(1Index)=sPath & sDir &″%%″
End If
End If
sDir=dir
Loop
For 1Index=1 To 1Index
′查找每一个子目录下文件,这里利用了递归
Call TreeSearch(sSubDirs(1Index),sFileSpec,sFiles())
Next 1Index
TreeSearch=1Files
End Function
3.保存文件,按F5运行,单击命令按钮即可。
程序运行环境:VB 4.0 (32位),中文WIN95。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询