- ベストアンサー
VBSで特定の文字列が含まれる場合の処理方法
こんにちは。 自分史上初めて投稿します。 テキストファイルを簡単に操作出来るということを聞いて、さいきんVBSを勉強し始めました。 そこで、特定のファイルの中身を読み込んで配列関数を使い配列に格納した後、特定の文字列が含まれる場合には別の文字列へと変換したいと思っているのですが、正規表現が上手くいきません(汗) どなたか助けていただけませんでしょうか? それともそもそも正規表現が使えないなんてことはないですよね・・・? よろしくお願いいたします。 ちなみに書いたコードは↓ Set WSHFso = CreateObject("Scripting.FileSystemObject") Set WshShell = WScript.CreateObject("WScript.Shell") Dim strSearchWord Set tmpFile = WSHFso.OpenTextFile("C:\Documents and Settings\●●●\○○.txt") Do Until tmpFile.AtEndOfStream tmpLine = tmpFile.ReadLine strSearchWord = strSearchWord & tmpLine & vbcrlf Loop Dim SearchWord SearchWord = split(strSearchWord," ") Select Case SearchWord(9) 'ここで『東京』というワードが含まれる場合に別処理を走らせたいのです・・・。 Case "*" & "東京" & "*" msgbox SearchWord(10) Case Else msgbox SearchWord(101) End Select
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
配列SearchWordの要素の文字列を置換したいのでしたら下のような感じでしょうか。Select Caseステートメントでは正規表現は使えないと思います。 Windows XP SP2 + WSH VBScript 5.6で試しました。 ----- Dim strSearchWord Dim SearchWord strSearchWord = "東京 東京駅 西東京 西東京は東京の西 品川" SearchWord = Split(strSearchWord," ") Set regEx = New RegExp regEx.Pattern = "東京" regEx.Global = True For ix=0 to UBound(SearchWord) SearchWord(ix) = regEx.Replace(SearchWord(ix), "神田") Next WScript.Echo Join(SearchWord, " ") ----- なお、特定の単純な文字列が含まれているか調べるには、正規表現を使わなくてもInStr関数でよさそうです。「別処理」でやりたいことの内容にもよりますが。 ----- if InStr(SearchWord(ix), "東京")<>0 then WScript.Echo SearchWord(ix) & " は東京を含みます。" else WScript.Echo SearchWord(ix) & " は東京を含みません。" end if -----
その他の回答 (1)
- Nayuta_X
- ベストアンサー率46% (240/511)
Like 演算子を使用します。 詳細は、下記URLなどを参考に http://www7.plala.or.jp/imajo/ke/samp/samp03.html 他にもいっぱいありますよ。
お礼
このサイトは初めてみました。 勉強したての私には非常に参考になります! ありがとうございます!
お礼
ちょっと改良して使ってみたら意図していることが出来ました! ありがとうございます。 ひじょうに助かりました!