Board logo

標題: 請問在字串中找字元的進階用法 [打印本頁]

作者: mlbolerud    時間: 2019-10-18 13:00     標題: 請問在字串中找字元的進階用法

各位大大
請問一下, 我有一個在字串中搜尋字元的問題, 如下
我的字串很長 , 裡面有6個 _ , 如果我要找第五個 _ , 有沒有比較好的方法呢?
我知道有InStr這個方式可以用 , 如 Instr(38, 字串, "_")
但是我的字串有時候長度會變, 如果指定38位置開始找, 有時後會抓錯
有沒有什麼方法可以直接找到字串中五個 _ 的位置?
感謝

字串=TouchTest_check_20180630_104354_108F02_68HR-R_K8
作者: hcm19522    時間: 2019-10-18 14:21

https://blog.xuite.net/hcm19522/twblog/588472101
作者: JasnH    時間: 2019-10-19 18:24

本帖最後由 JasnH 於 2019-10-19 18:25 編輯

Sub test1()
    p = 5       'The position of nth "_"
    tx = Cells(1, 1)
    For i = 1 To Len(tx)
        If Mid(tx, i, 1) = "_" Then jo = jo & " " & i
    Next i
    s = Split(Mid(jo, 2))
    Ans = s(p - 1)
    MsgBox "The position of " & p & "th ""_"" is " & Ans
End Sub
作者: mlbolerud    時間: 2019-10-21 12:10

感謝兩位大大的解答, 我後來找了一下資料
我想到下面這個方式也可以算出來

Sub test()
Dim no As Byte
Dim Data As String

Data=Cells(3,32).Value   ''''' 字串位置
no=Cells(5,32).Value       ''''' 要找第幾個 _
Count=0
data_split = Split(Data , "_")
For i=1 To no
   Count = Count+1+Len(data_split(i-1))
Next i
MsgBox("第" & no & "個_的位置是" & Count)
EndSub
作者: 准提部林    時間: 2019-10-26 12:08

Sub TEST_01()
Dim T$, TR, V%
T = "TouchTest_check_20180630_104354_108F02_68HR-R_K8"
V = 5
TR = Split(T, "_")
If V <= 0 Or UBound(TR) < V - 1 Then MsgBox "超過取字範圍!!": Exit Sub
MsgBox TR(V - 1)
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)