编程论坛's Archiver

sznt 发表于 2008-4-29 19:51

VB之巧截字符串(探讨用InStrRev函数配合Right/Left函数截取字符串)

VB的Right函数、Left函数提供了从左或从右在已知字符串中截取指定数量的未知字符串的功能,不过要获取某个特定字符前面或者后面的字符串,情形就不一样了,比如我们要在字符串"E:\MyFavourite\001\xxx.xxx"中截取最后一个"\"后面的字符串亦即文件名,单单用上述几个函数是难以实现的,因为文件名的字节数难以确定。这时函数InStrRev就派上用场了。InStrRev返回一个字符串在另一个字符串出现的位置,充分利用它可以轻而易举地截取所要的内容。
下面举个实例来加以说明,希望大家可以从中得到启示。本例仅需要一个TextBox控件。

Private Sub Form_Load()
'声明已知字符串的字节数、"\"所在位置的变量
Dim n As Integer, m As Integer
'声明字符串变量
Dim i As String, j As String
j = "E:\Music\MyFavourite\001\Spring.mp3" '已知字符串初值
i = "\" '要查找的指定字符
For n = 1 To Len(j) '这里用了Len函数来计算已知字符串的字节数
m = InStrRev(j, i, -1) '"\"所在的位置(其中的-1是默认的)
Next n
'显示最后一个"\"后面的字符串
Text1.Text = Right(j, Len(j) - m)
End Sub

运行程序,文本框中的是不是明明白白地躺着"Spring.mp3"?试着改一改j变量,得到的结果是不是预期的?

hxfly 发表于 2008-4-29 21:31

split(path,"\")(ubound(split(path,"\")))

slore 发表于 2008-4-30 02:10

[color=#000080]Dim [/color]i [color=#000080]As String, [/color]j [color=#000080]As String
[/color]j [color=#FF0000]= [/color]"[color=#008080]E:\Music\MyFavourite\001\Spring.mp3[/color]" [color=#008000]'已知字符串初值
[/color]i [color=#FF0000]= [/color]"[color=#008080]\[/color]" [color=#008000]'要查找的指定字符


'你是不是搞的复杂化了?
[/color][color=#000080]Print Right[/color][color=#FF0000]([/color]j, [color=#000080]Len[/color][color=#FF0000]([/color]j[color=#FF0000]) - [/color][color=#000080]InstrRev[/color][color=#FF0000]([/color]j, i[color=#FF0000]))[/color]

sznt 发表于 2008-5-1 21:26

多谢指教,冰山一角,抛砖引玉,多谢。

dwh2005 发表于 2008-5-11 16:46

学习一下.

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.