hjtai 发表于 2008-6-5 10:00

大侠9命——如何读取特定字符右边的字符串(已解决,谢谢斑竹随风逐流)

譬如这个字符串HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun
要获取“\”左边的字符可以用pos函数先得到第一个"\"的位置,然后用
left(string,lpos)
但是如果要获取最后那个"\"的位置,然后获取"\"右边的函数应该怎么做呢
right(string,rpos)
这个rpos怎么去获得?还有如果要获得这2个"\"中间的字符串,应该怎么使用mid函数呢?

[[it] 本帖最后由 hjtai 于 2008-6-5 10:41 编辑 [/it]]

[[it] 本帖最后由 hjtai 于 2008-6-5 10:42 编辑 [/it]]

sky_yang_sky 发表于 2008-6-5 10:07

用charindex加reverse应可以实现你所要的所有功能

随风逐流 发表于 2008-6-5 10:13

LS的不要亂搞

Dim a As String
    a = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun"
    MsgBox Right(a, Len(a) - InStrRev(a, "\"))

随风逐流 发表于 2008-6-5 10:14

InStr函數是從左邊開始找
InStrRev函數是從右邊開始找

hjtai 发表于 2008-6-5 10:24

MyPos = InstrRev("12345678","8",-1,1)

就是从最后搜索从最后一个字符位置开始。然后搜索从右到左继续进行,
读的位置是从左向右来读,所以是第八,位置是相对左边的!!
InstrRev("12345687","8",-1,1) '返回7
InstrRev("1834567","8",5,1)'从左边第五位开始向左搜索第一个8,返回2
InstrRev("1838567","8",5,1)'从左边第五位开始向左搜索第一个8,返回4

在网上找到一个这样的回复,解决了取右边字符的问题。
但是取2个字符中间字符串的问题……还是不知道怎么做
谢谢LS几位老大

hjtai 发表于 2008-6-5 10:26

想到一个比较愚笨的方法就是,取第一个"\"字符后面的字符串,然后减去最后一个"\"字符后面的字符串,不知道可不可以,我去试试先

随风逐流 发表于 2008-6-5 10:37

老兄,你要思考
例如說HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun
你要得到第3個吧
Dim a As String
Dim i As String
    a = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun"
'    MsgBox Right(a, Len(a) - InStrRev(a, "\"))
   
    i = 1
    Do While i < 3
        a = Right(a, Len(a) - InStr(a, "\"))
        i = i + 1
    Loop
    MsgBox Left(a, InStr(a, "\") - 1)

Do While i < 3(如果你要取第四個,把這裡3改成4)

suntiger 发表于 2008-7-2 14:02

感谢随风逐流,也帮了我一大忙。。。

Joforn 发表于 2008-7-3 09:38

[quote][bo][un]hjtai[/un] 在 2008-6-5 10:00 的发言:[/bo]

譬如这个字符串HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun
要获取“\”左边的字符可以用pos函数先得到第一个"\"的位置,然后用
left(string,lpos)
但 ... [/quote]

  Dim STR1 As String
  Dim I As Long, J As Long
  
  STR1 = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun"
  I = InStr(STR1, "\") + 1
  If I > 1 Then
    J = InStrRev(STR1, "\")
    If J Then Debug.Print Mid(STR1, I, J - I)
  End If

页: [1]

编程论坛