アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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回目の位置
    • good
    • 0

ループ処理 で 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
    • good
    • 0

 


 ごめん。質問は、vbsだった。

No.1は忘れてください。
 
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/07 16:56

 


#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;
}
 
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!