文字検索 の文字の数を調べるには?


moji  2004-03-24 03:03:48  No: 82686  IP: [192.*.*.*]

文字検索について教えてください。

文字内に指定した文字がはいっているかどうかはINSTR関数で<>0でなければ
指定文字が入っているということとHPに書いてあったのですが、

Dim moji as String
moji = qqqqqkqqkkqqqkqqqq
INSTR(moji,"k")    →    6が返ってくるので<>0ではなく、Kが入っているということになる。


文字内に指定した文字が何文字入っているかどうかは調べれないんでしょうか?


moji  の中にkがいくつはいっているかを調べたいんです。

よろしくお願いします。

編集    削除
マフユ  2004-03-24 03:51:18  No: 82687  IP: [192.*.*.*]

InStr([開始位置,]文字列,検索文字[,比較モード])
ですので INSTR(moji,"k")  で見つかった位置+1を
次の開始位置にしてゼロになるまで(これ以上は無い)
For 文で探してカウントしたら如何ですか?

又は下記でやってみるとか。

Dim moji As String
Dim dat() As String
Dim kazu As Integer

moji = "qqqqqkqqkkqqqkqqqq"

dat = Split(moji, "k")
kazu = UBound(dat)

編集    削除
nanashi  2004-03-24 19:32:15  No: 82688  IP: [192.*.*.*]

Dim moji As String

moji = "qqqqqkqqkkqqqkqqqq"

Debug.Print Len(moji) - Len(Replace(moji, "k", ""))

編集    削除
通りすがってみた人  2004-03-25 02:17:44  No: 82689  IP: [192.*.*.*]

nanashiさんのを改良

Dim moji As String
    
moji = "qqqqqkqqkkqqqkqqqq"     '文字列
smoji = "kk"                    '検索文字
    
Debug.Print (Len(moji) - Len(Replace(moji, smoji, ""))) / Len(smoji)

編集    削除
ちょこ  2004-04-16 03:04:56  No: 82690  IP: [192.*.*.*]

私はこんな方法でやっちゃいます。(むちゃくちゃでごめんなさい)

Dim moji As String
Dim splitdata() As String
moji = "qqqqqkqqkkqqqkqqqq"
splitdata = Split(moji, "k")
Debug.Print CStr(UBound(splitdata))

編集    削除