- ベストアンサー
ある文字列を検索するボタンのつくりかた
- テキストファイルの内容を表示するボタンを作成しました。特定の文字列のみを抜き出す方法を教えてください。
- 初心者でも簡単に実装できる方法を教えてください。
- テキストボックスに表示するテキストファイルから特定の文字列を抜き出す方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
補足の回答です。 pos = InStr(1,RichTextBox1.Text,"bcd") If pos > 0 Then RichTextBox1.Text = Mid$(RichTextBox1.Text,pos,Len("bcd")) End If strTextに"bcd"のみ抜き出します。 ある意味、 pos = InStr(1,RichTextBox1.Text,"bcd") If pos > 0 Then RichTextBox1.Text = "bcd" End If でも同じ結果が返ります。
その他の回答 (1)
- sorarisp
- ベストアンサー率58% (7/12)
単純に、文字列から特定の文字列を抜き出すと考えてよいのでしょうか? 上の例で言うと、"abcdefg" → "aefg" のようにする。 というこで説明しますと、 InStrを使った方法。 pos = 1 Do pos = InStr(pos,RichTextBox1.Text,"bcd") If pos > 0 Then ' 見つからなければ0を返します If pos = 1 Then RichTextBox1.Text = Mid$(RichTextBox1.Text,pos + Len("bcd")) ElseIf pos > Len(RichTextBox1.Text) - Len("bcd") Then RichTextBox1.Text = Left$(RichTextBox1.Text,pos - 1) Else RichTextBox1.Text = Left$(RichTextBox1.Text,pos - 1) & Mid$(RichTextBox1.Text,pos + Len("bcd")) End If End If Loop while pos > 0 And pos < Len(RichTextBox1.Text) 試していないのでなんともいえませんがこれで出来るはずです。 それともう一つ。 Replaceを使った方法。 RichTextBox1.Text = Replace(RichTextBox1.Text,"bcd","") これでも出来ると思います。
お礼
質問の意味と答えが喰い違ってしまいましたが、「InStrを使った方法。」で "aefg"を抜き出すことが出来ました。ありがとうございます。度々申し訳ない のですが、回答に対する補足のやり方も教えていただけないでしょうか。
補足
質問の仕方が悪かったようで、すいません。 例.abcdefgと書かれたテキストに対してbcdのみ抜き出す "abcdefg" → "bcd" のようにする。 という意味です。
お礼
"bcd"のみ拾えるようになりました。ありがとうございます。
補足
"bcd"のみ表示できるようになったのはいいのですが、"bcd"文字列が複数回 出ているテキストファイルも1回分しか表示できません(つまり"bcd"があるか ないかはわかるのですが、何回表示されているかがわからない)。下の例の ように出来ないものでしょうか。 例. a"bcd"efg "bcd"xyz "bcd" "bcd" と書かれたテキスト これを"bcd"のみ表示できるように設定したボタンを押す ↓ "bcd"とテキストボックスに表示される ↓ 本当は "bcd" "bcd" bcd" "bcd" と表示したい(上の例では"bcd"が 4回出ているため) また、"bcd"が一度も出てこないテキストに対しては、テキストボックスに 何も表示がでないようにした上に、「"bcd"が見つかりません」と書かれた メッセージボックスを表示したいのですが、現状では元の文がそのまま 表示されてしまいます。If式を使うか、 If pos > 0 Then RichTextBox1.Text = "bcd" の後に、"Else"で処理すればよいかとは思うのですが、これもよくわから ないので、あわせて教えていただけないでしょうか。