特定文字列の抽出方法について

このQ&Aのポイント
  • VB6の質問です。桁数、データが不定の文字列中から特定文字を抽出する方法を教えていただけますか?Mid, Left, Right関数が使用できないため、抽出したいデータの桁数が毎回不定です。
  • 例えば、変数Bufferから、桁数を考慮しないで"TARGET"の文字列を抽出したいです。InStr関数で位置を特定し、Mid関数などで抽出する方法が理想ですが、どんな桁数のときでも対応できるようにルーチン化できないでしょうか?
  • 質問内容はVB6で不定桁数の文字列中から特定文字を抽出する方法についてです。Mid, Left, Right関数が使用できないため、どんな桁数のときでも対応できるルーチン化の方法を教えてください。
回答を見る
  • ベストアンサー

特定文字列の抽出

VB6の質問です。 桁数、データが不定の文字列中から特定文字を抽出したいのでが、方法を教えていただけないでしょうか? 抽出したいデータの桁数が毎回不定でMid, Left, Right関数が使用できません。 Dim Buffer As String Buffer = "A12345...B678910.TRAGET..C" '桁数、データが不定の文字列がBufferに入ります。 例えば、変数Bufferから、桁数を考慮しないで"TARGET"の文字列を抽出したのです。 InStr関数で、位置を特定して、Mid関数などで抽出するれば、良いと思うのですが これをどんな桁数のときも対応できるようにルーチン化にできないでしょうか?

noname#187796
noname#187796

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 例えば、変数Bufferから、桁数を考慮しないで"TARGET"の文字列を抽出したのです。 なさりたいことをもう少し詳しく教えてくださいね。 欲しいのは"TARGET"ですか?それとも"TARGET"を取り除いた残りの部分ですか? 前者なら、instrでも用いて"TARGET"が含まれる場合に文字定数"TARGET"を返せばおしまい。 後者なら、 Buffer = "A12345...B678910.TARGET..C" 'わざと2行にしましたが、一行でも可能 Buffer = join(split(Buffer, "TARGET")) ’一行なら下記のとおり ’Buffer = join(split("A12345...B678910.TARGET..C", "TARGET")) ’"TARGET"を"SOURCE"に置き換えることも簡単 ’Buffer = join(split("A12345...B678910.TARGET..C", "SOURCE"))

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

#1です。すみません、訂正させてください。 join関数の引数が必要でした。 Buffer = "A12345...B678910.TARGET..C" 'わざと2行にしましたが、一行でも可能 Buffer = join(split(Buffer, "TARGET"), "") ’一行なら下記のとおり ’Buffer = join(split("A12345...B678910.TARGET..C", "TARGET"), "") ’"TARGET"を"SOURCE"に置き換えることも簡単 ’Buffer = join(split("A12345...B678910.TARGET..C", "TARGET"), "SOURCE")

関連するQ&A

  • 文字列操作

    VB6の質問です。 下記のような桁数不定の取得データがございます。 桁数不定の為、Mid, Left, Right関数が使用できません。 Buffer = "A12345...B678910...C" 区切り文字A、B、Cを除いてデータを取り出したのですが、どのような方法がございますか? Data1 ="12345..." Data2 ="678910..."

  • 文字列の抽出方法について

    アクセス2000を使っています。 D:\test\image\image.bmp 上記したようなファイル名のフルパスから、下記のようにフォルダ名のみを取り出したいのですがうまくいきません。  D:\test\image\ InStr関数で"\"の位置を抽出して、left関数で抽出した位置より左側のデータを取り出そうと思ったのですが、InStr関数では、最初に見つかった"\"の位置を抽出してしまうため、left関数で取り出した値が下記のようになってしまい、正確なデータが取り出せません。どうしたらいいでしょうか?  d:\

  • EXCEL2007で文字列の右側から特定文字を抽出

    EXCEL2007で1つのセルの文字列の右側から最初の"/"が出現したときまでの文字を抽出する方法を教えてください。 (例)  A 1エクセル/関数/123456/ここがターゲット 2 3 ⇒関数を使用し、上記A1セルの「ここがターゲット」の文字列を抽出したいのです。 神様、どうか教えてください!

  • Excel2007 マクロ 特定セルの文字列抽出

    Excel2007 マクロ 特定セルの文字列抽出 A列に100行程度、製品番号が入っています。 例えばAAAA-NNN-BBBB-UUUUUUUとある場合に NNNだけを抽出して、B列に転記します。 関数であれば、Mid関数で解決できるのですが、 マクロで解決したいです。 下記を自分で考えたのですが、エラーが発生します。 アドバイスお願いいたします。 Sub moji() Dim last As Long, i As Long Dim strt As Integer 'A列「製品番号」から文字を抽出してB列に反映 last = Range("A65536").End(xlUp).Row For i = 2 To last strt = Mid("A", 7, 3) Cells(i, "B") = strt Next i End Sub

  • 指定した文字列が抽出できる関数

    Excelで、指定した文字列だけを抽出表示する場合、「文字列を先頭(左)から抽出する」などの関数は「LEFT関数」や「RIGHT関数」がありますが、位置の指定ではなく、文字列の中にある、特定の文字だけを指定して抽出してできる関数は何でしょうか? たとえば「ラーメン」「うどん」「そば」いずれかを「含む」文字列が入っているセルの中から、「うどん」のセルだけを抽出して表示するという場合です。

  • エクセル 特定の文字列を抽出・挿入

    例えば A列にあるセルの中から特定の文字列を検索・抽出して、その特定の文字列だけB列に挿入していく関数はありますか? またはA列にあるセルの中から特定の文字列に挟まれた文字列を検索・抽出してその特定の文字列だけB列に挿入していく関数はありますか? マクロを組まないと難しいのでしょうか?

  • アクセス2000で文字列に文字を挿入する方法。

    InStr関数で、特定の文字(例えば、;)を探して、Mid関数を使って、その文字を特定の文字(例えば、【)に置き換えることには成功しました。 しかし、「;」を「【第」に置き換えようとすると必要なデータまで消してしまいます。「【」は置き換えでよいとしても、「第」は挿入する必要があるのですが、どのようなコードを使えばいいのでしょうか?

  • エクセルVBAで特定文字列の個数を高速に調べたい

    文字列の入っている変数内で特定の文字列(今回はvbCrLf)が何個発生しているかを、高速に調べたいのですが、どのような方法があるでしょうか? 現在以下のことをやっています。 数千件のテキストファイルから特定文字列を検索しています。 検索を高速化するために、テキストファイルをバイナリーモードで1つの変数に読み込み、instr関数で検索しています。 見つかった場合、その位置から前にあるvbCrLfをInStrRev関数で、後ろにあるvbCrLfをinstr関数で位置を調べ、元の変数からmid関数で該当ラインを取り出しています。 検索はこれで可能ですが、特定文字列を調べたinstr関数の戻り値がテキストファイルの先頭からの位置(何桁目)なので、検索した文字列が何行目にあるか分かりません。 変数の検索文字が見つかった位置までの部分でvbCrLfが何個発生しているかが分かれば行数が判定できます。 vbCrLfを調べるinstr関数を何回も繰り返せば行数の判定は可能ですが、もっと高速に(一つの関数・命令で)調べることはできないでしょうか? また他に行数を特定する良い方法があったら教えてください。 よろしくお願い申し上げます。

  • 指定文字から指定位置の文字を除く文字を抽出する

    例えば 文字列「Momotarou too inu kiji」だとして 先頭から11文字目の「t」から13文字の「o」である「too」を抜き出した 文字列「Momotarou inu kiji」を抽出したいと思います。 希望は、 Functionプロシージャで自前の関数です。 (関数にする必要無い場合など別案でも回答としては十分です。) ターゲット文字列(Moji)と最初と最後の文字数(Fp,Lp)を指定して 抽出する文字列(New_Moji)だとすれば New_Moji(Moji,Fp,Lp) ---> New_Moji("Momotarou too inu kiji",11,13) のような型式を想定しています。 特定の文字よりinstrとLeftを利用して左部分にある文字列を取り出すなどの コードは出来るのですが問題の関数となると今の私には難しいです。 Office 2021 / Windows_11

  • ACCESS 文字の抽出方法

    ACCESS2000で開発しています。 簡単なことだと思うのですが、ある文字列のなかから"/"以外の文字を抽出するにはどうすればよいですか? 例)年月日 テキスト ”2008/06/23”               ↓            ”20080623” LEFT関数やMID関数でできるのですが、できれば上記の方法でやりたいと思っています。 よろしくお願いします。

専門家に質問してみよう