• ベストアンサー

ある文字列で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