2011-09-11 21 views
0

複数の単語をテキストファイルで同時に検索したい。マジッド、スーパーユーザ、デバイステキストファイルの単語に基づいてファイルを検索する

通常、私は彼らのために一つ一つを検索しなければならない、と私は同時にそれらのすべてを検索することはできません:たとえば

は、私はこれらの3つの単語を検索したいと思います。だから、これらの単語をテキストファイルで同時に検索したいのです。

これらの3語をテキストファイルに1行に1語ずつ入力します。それをSearchTextと名づけましょう。今では、その中のそれらの単語を検索したいTarget Textがあります。それをTargetTextと名づけましょう。

SearchTextから単語を取得し、TargetTextでそれらを見つけてハイライトしたり、検索結果を教えたりするために、アプリなどに伝えたいと思っています。

私は明らかです。だから誰でも私を殴ることができますか?

+0

そして、えー...何語私たちが話しているの?それをタグとして追加してください。 – Bojangles

答えて

1

あなたは明らかです。私は最良の選択肢はRegexだろうと思う。
これを試してみてください:

Option Explicit 
Dim oFso  : Set oFso = CreateObject("Scripting.FileSystemObject") 
Dim srcPath  : SrcPath = oFso.GetParentFolderName(WScript.ScriptFullName) 
Dim sWordList : sWordList = ofso.OpenTextFile(oFso.BuildPath(srcPath, "search.txt")).ReadAll() 
Dim sTargFile : sTargFile = ofso.OpenTextFile(oFso.BuildPath(srcPath, "target.txt")).ReadAll() 
Dim strWords : strWords = Join(Split(sWordList, vbCrLf), "|") 
Dim oReg  : Set oReg = New RegExp 
Dim oDict  : Set oDict = CreateObject("Scripting.Dictionary") 'for found words 
oDict.CompareMode = vbTextCompare 'case insensitive 

With oReg 
    .Global = True 
    .IgnoreCase = True 
    .Pattern = "("& strWords &")" ' (word1|word2|word3|etc..) 
    'if the words contain some special chars for regex, you may need to escape with \ char 
    'see the information below: http://goo.gl/cqGVp 
    Dim collFND : Set collFND = oReg.Execute(sTargFile) 
    Dim Fnd 
    'WScript.Echo String(50, "-") 
    For Each Fnd In collFND 
     With Fnd 
      'WScript.Echo "Word : "& .Value, ", Position: ("& .FirstIndex &","& .Length &")" 
      oDict(.Value) = "" 
     End With 
    Next 
    Set collFND = Nothing 
    'WScript.Echo String(50, "-"), vbCrLf, "Higlighted Output:", oReg.Replace(sTargFile, "[$1]") 
    ofso.CreateTextFile(oFso.BuildPath(srcPath, "foundwords.txt"),True).Write(Join(oDict.Keys, vbCrLf)) 'found words saved 
End With 
+0

こんにちはKul-Tigin、あなたの返信をもう一度お寄せいただきありがとうございます。見つかった単語をテキストファイルに保存するには、このスクリプトをどのようにしますか?また、メッセージをスキップする方法はありますか? – Nofuzy

+0

もちろん、私は答えを更新しました。 –

+0

コード内の特殊文字に関するコメントを参照してください。特別な文字をエスケープする必要があります。 –

関連する問題