• ベストアンサー

ある文字列で2回目3回目に出現するtabの位置を得るには?

vbs初心者です。 ある文字列で2回目3回目に出現するtabの位置を得るにはどうすればよろしいのでしょうか? instrだと指定位置から最初にHITする位置しか得られないようなのですが、どなたかご教授願います。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

こんな感じ、 表示されるタブ位置は、先頭を0とした文字位置です。 ---------------------------------------------------------------- Dim text Dim regEx, Match, Matches text="瀬を早み" & vbTab & "岩にせかるる滝川の" & vbTab & "われても末に" &vbTab & "あはむとぞ思ふ" Set regEx = New RegExp regEx.Pattern = "\t" regEx.Global = True Set Matches = regEx.Execute(text) For Each Match in Matches WScript.Echo Match.FirstIndex & " で見つかりました。" Next 'WScript.Echo Matches(1).FirstIndex '2回目の位置 'WScript.Echo Matches(2).FirstIndex '3回目の位置

その他の回答 (3)

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.3

ループ処理 で InStr関数を使用して処理実装しましょう。 VBScriptのコーディングサンプルを下記します。 サンプル [文字列中 (strWord) より "XYZ"を検索し2回目、3回目の発見位置を取得する。] Dim intLen,intStart,intRet,intHitCounter DIm strWord '文字列を設定 strWord = "ABCDEXYZFGHIJXYZKLMNOXYZPQRSTXYZUVXYZ" '文字列の長さ取得 intLen = Len(strWord) '検索開始文字位置の設定 intStart = 1 'ヒットカウンター初期化 intHitCounter = 0 Do '"XYZ"を検索する。 intRet = InStr(intStart,strWord,"XYZ",1) '検索結果...対象なしの場合はループ処理を抜ける。 IF intRet = 0 THEN Exit Do End IF 'ヒットカウンター カウントアップ intHitCounter = intHitCounter + 1 '2回目、3回目の発見の場合発見位置をポップアップ表示する。 IF intHitCounter = 2 Or intHitCounter = 3 THEN MsgBox intHitCounter & "回目の発見位置は、 " & intRet & "です。" End IF intStart = intRet + 3 Loop

回答No.2

   ごめん。質問は、vbsだった。 No.1は忘れてください。  

muropon
質問者

お礼

いえいえ、こちらこそ今のところVBSをちょっとかじっただけでして・・・逆にこっちが情けない限りです^^

回答No.1

  #include <stdio.h> #include <string.h> int main(void) { char *str = "abc\tdefg\thijklm\tnop"; char *pch; printf("%s\n", str); pch = str; while((pch = strchr(pch, '\t')) != NULL) printf("%s\n", pch ++); return 0; }  

関連するQ&A

  • タブ位置を設定後タブを押したら文字列が消えます(Word2000)

    Word2000 を使っています。 ある段落の中央揃えタブの位置を設定後、タブ位置に揃えたい文字列の先頭にカーソルを合わせタブを一回押しましたら、その文字列が消えてしまいます。 なぜ消えるのでしょうか?古いWordだからでしょうか?

  • 文字列検索で

    よろしくお願いします。 文字列検索instr関数で、特定文字(スペース)でない文字を検索したいのですが、どのようにしたらいいですか? instr関数では、できないのでしょうか? たとえば、 文字列" osietegoo "  →  3 文字列"    situmon"  →  7 スペースでない文字が出現する位置を知りたいです。 instr(文字列,"o")ではなく、" "ではない、、、としたいのですが、できますか?

  • 変数内の文字列にある最後の「"」位置を調べたい。

    変数myStrに格納されている文字列に幾つか含まれる文字「"」のうち、最後の「"」が文字列の何文字目に有るか出したいです。 InStr(1,myStr,""") 普通にInstrを使うと最初の文字位置を返してきます。 また「"」は"""になってしまいます。

  • Excel関数を使って、対象文字が検索文字列でn番目に出現した位置を知りたい

    どうもお世話になります。 Excel関数を使って以下の検索を行いたいのですが、可能でしょうか。 例)以下のような表があったとします。  A B C D E F G 1 0 0 1 1 0 0 0 2 1 1 0 1 0 0 0 ⇒○(例えば1)行目を検索し、□(例えば0)が△(例えば3)回目に出てくる位置を返す。 【答え】E1 表の中の文字列は、数字でなく色々な文字(ABとか)を使ってもいいです。 OracleのInstr関数のような使い方と言えばよいでしょうか。 できればマクロは使いたくありません。 Lookup、match、index関数など色々試しましたがダメでした。 ご教授のほどよろしくお願いします。

  • 文字列中からある文字列とある文字列の間にある文字列を取得

    表題にあるとおり間の文字列をどうやって取得するべきかと悩んでいます・・ abcdefghijklmn・・・ となっているとき bとe、aとkなど間の間隔が不定なときはどのようにして文字列を取得したらよいのでしょうか? 最初の2文字は与えられているとして考えています。 インターネットのURLで言うなら/から/までの間の文字列と言うことになります。 今私が考えているのは strchrで位置のアドレスを取得してそこからfor文かwhile文で指定の2文字目が出るまでまわすのかなぁ・・と思っています。 ですが具体的にどのような感じに書けばいいのかがわかりません。どなたかご教授ください。

  • 検索文字が右から何文字目にあるか文字位置を取得

    検索文字が右から何文字目にあるか文字位置を取得したいのですが 2文字指定できないのでしょうか? Sub test01() Debug.Print InStr(1, StrReverse("abcde"), "cd") End Sub だと、0が返りますが、 Sub test02() Debug.Print InStr(1, StrReverse("abcde"), "c") End Sub だと3が返ります。 複数の文字の検索文字が右から何文字目にあるか文字位置をする方法を ご教授ください。

  • 文字列の括弧について(初心者)2

    文字列の括弧について(初心者) http://oshiete1.goo.ne.jp/kotaeru.php3?q=1110818 の質問の続きなのですが、 文字列の中で( )を1セットで使う方法を教えてもらったので自分の使用するプログラムに少し直したのですが、やはり2つ以上の括弧(カッコ)にも対応しなければならなくなりました。 どのようなプログラムになるのでしょうか? 私はInstrは文字列を左からよんでいって最初にある指定した文字(下記の例だと"("など)の場所を何文字目か示してくれるだけなので1つの括弧にしか対応できないと考えています。 なので文字列の中に指定した文字が何個含まれているか調べて、それぞれ何文字目か示してくれるプログラムが あればできると考えています。 どうか教えてください、おねがいします。 ↓今のプログラム Dim bucketL as Long Dim bucketR as Long Dim a as String Dim b as String a=Text1.text bucketL = InStr(a, "(") bucketR = InStr(a, ")") If bucketL < bucketR And bucketL * bucketR <> 0 Then Text2.text = "OK" End If

  • 文字列の中の検索で、3番目に出てくる文字の位置を調べたい

    関数を使いXX回目の文字の位置を調べ たいのですが =============================== たとえば 文字列”ABCDABCDABCDABCD”の中の 3回目のBの位置を調べたいのですが (答えは 10です) =============================== 関数SERCH または FINDは、最初に出てくる 位置を返してくれるのですが、 XX回目の位置となると、どういう工夫をすれば いいのでしょう? ご存知の方お願いいたします。

  • javascriptで同文字の出現回数を調べるには

    javascriptで入力チェック時に以下の条件を満たすようにしたいのですが、 簡単にできる方法はないでしょうか。 条件 ・文字列内に同じ文字が指定回数以上出現していたらアラートを出したい。 例)「1a1b1a1c」という文字列があったとすると、「1」の出現回数は4。 「a」の出現回数は2。「b」「c」の出現回数は1。 といったように、連続しているとは限らないある特定の文字が 何回出現しているかを知るにはどうしたら良いでしょうか。 正規表現で試みたのですが、どうにもできず困っております。

  • vbsでスクロール位置を指定してurlを開くには?

    vbsを実行して、IE等でurlを開くことはできるのですが、 最初に指定した文字列を検索し、その検索一致位置までスクロールを下げた状態で開くことはできますか?

専門家に質問してみよう