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

正規表現で、改行を含んだ文字列を置換しようと思っています。
例えば下の「infile.txt」にある
aaa
bbb
という(2行にわたる)文字列を
zzz
という文字列に変換させたい訳です。
試しに「test.vbs」のようなコードを書いてみましたが、これでは上手く行きませんでした。
上手く変換されるようにするには、どうしたら良いでしょうか?


-----------------------------------------------------
○「test.vbs」の内容
Set fso = CreateObject("Scripting.FileSystemObject")
Set inFile = fso.OpenTextFile("C:\infile.txt")
Set outFile = fso.CreateTextFile("C:\outfile.txt")

Set regEx = New RegExp
regEx.pattern = "aaa\nbbb"
repStr = "zzz"

Do Until inFile.AtEndOfStream
tempLine = inFile.ReadLine
repLine = regEx.Replace(tempLine, repStr)
outFile.WriteLine repLine
Loop

inFile.Close
outFile.Close

-----------------------------------------------------
○「C:\infile.txt」の内容
aaa
bbb
ccc

A 回答 (2件)

> tempLine = inFile.ReadLine


のReadLineをReadAllに差し替えればよいかと。

ReadAll メソッド
http://msdn.microsoft.com/library/ja/script56/ht …

そうすれば、ファイルの内容全体を一つの文字列として得ることが
できますから、普通に文字列相手にするようにすればOK。

wsh vbs メソッド名(ReadLineとか)

で検索すれば、割と簡単に見つけられるのではないかと思います。
もちろん一発ではダメで、何回かキーワードを変えながらたどらないと
上記のMSのページ等にはいけないでしょうけど。
    • good
    • 0

>tempLine = inFile.ReadLine


>repLine = regEx.Replace(tempLine, repStr)

これって、ファイルから1行ずつ読み込んで1行ごとに正規表現チェックしてるようになってないかなあ。
ファイルの内容をすべて読み込んでから一気に変換しないといけない気がする。

#もしかすると、それでもだめかもしれない。
(2行にわたる内容が正規表現に引っかからないかもしれないため)
その場合、改行コードを一時的に別の文字("\n"とか)に変換してからやってみるとうまくいくかも。
もちろん後で元に戻すのは必要。
※メモリ使用量などは一切考慮してません、悪しからず。

この回答への補足

neko_nokoさん、早速有り難うございます。
ファイル内容を全て読み込んで一挙に変換する方法は、どこを調べれば良いでしょうか?

補足日時:2007/10/25 22:34
    • good
    • 0

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