掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
文字列の中から特定の文字列の数を調べるには? (ID:125238)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 分かりずらかった表記 一番分かり難かったのは、「開発環境」が明示されていない事ですね。(^^; VBScriptか、VB.NETか、旧VB/VBAかで、回答の方向性も変わってきますし。 それと、質問内容自体にも、少々曖昧な部分があって、たとえば、 > 特定の文字列の数を > 特定の文字列の文字位置を などと、見つかった『位置』を知りたいのか、『数』を知りたいのかも 質問文からは読み取り難かったです。 (題名から想像するに、知りたいのは「数」ですよね?) > 具体的にForやdo whileなどを使って処理するコードが分からないのです。 そういう時は、まず、御自身がやろうとしている処理が、 「何を繰り返させようとしている処理なのか」を想像すると良いかも。 今回の場合、 「InStrの第1引数(検索開始位置)を変更させながら、検索を繰り返す」 という処理方法になるわけですよね。 となれば、ループ中で、その開始位置を、徐々に変化させれば良いわけで。 で、ループ処理として、For〜Nextを使うべきか、それとも、 Do〜Loopを使うべきかという話がありますが、これは、ループ回数が 予め分かっている場合はFor、不明ならばDo、というのが一般的です。 例えば "肩をたたいて、かたたたき" から "たた" を探すような場合に、これを「2回」とみなしたい場合には、 [ループ回数]=[元の文字列の長さ]となりますので、Forが便利ですが、 これを「1回」としてカウントしたいのであれば、ループ回数が 事前には分かりにくいので、Do〜Loopの方が便利でしょうね。 》いなさん > Dim strHoge As String '文字列 > Dim strChar As String '文字 元の質問文は、「特定の文字の数」ではなく、「特定の文字列の数」だったような。 > If InStr(strHoge, strChar) > 0 Then > IntCnt = IntCnt + 1 > strHoge = Right(strHoge, Len(strHoge) - InStr(strHoge, strChar)) > Else Right と Len を組み合わせて使うかわりに、Midを用いて、 strHoge = Mid(strHoge, InStr(strHoge, strChar) + 1) のように書く事もできますね。この場合、先の例で言えば、 strHoge = "肩をたたいて、かたたたき" strChar = "たた" の時に、IntCnt が「3」という結果を返すようになります。 もしもこれを、「2」というカウントの仕方にしたいのであれば、 strHoge = Mid(strHoge, InStr(strHoge, strChar) + Len(strChar)) と書き換えればOKかな。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.