
正規表現で、改行を含んだ文字列を置換しようと思っています。
例えば下の「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件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> tempLine = inFile.ReadLine
のReadLineをReadAllに差し替えればよいかと。
ReadAll メソッド
http://msdn.microsoft.com/library/ja/script56/ht …
そうすれば、ファイルの内容全体を一つの文字列として得ることが
できますから、普通に文字列相手にするようにすればOK。
wsh vbs メソッド名(ReadLineとか)
で検索すれば、割と簡単に見つけられるのではないかと思います。
もちろん一発ではダメで、何回かキーワードを変えながらたどらないと
上記のMSのページ等にはいけないでしょうけど。
No.1
- 回答日時:
>tempLine = inFile.ReadLine
>repLine = regEx.Replace(tempLine, repStr)
これって、ファイルから1行ずつ読み込んで1行ごとに正規表現チェックしてるようになってないかなあ。
ファイルの内容をすべて読み込んでから一気に変換しないといけない気がする。
#もしかすると、それでもだめかもしれない。
(2行にわたる内容が正規表現に引っかからないかもしれないため)
その場合、改行コードを一時的に別の文字("\n"とか)に変換してからやってみるとうまくいくかも。
もちろん後で元に戻すのは必要。
※メモリ使用量などは一切考慮してません、悪しからず。
この回答への補足
neko_nokoさん、早速有り難うございます。
ファイル内容を全て読み込んで一挙に変換する方法は、どこを調べれば良いでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) Excel VBAについて、 フォルダ内のファイルを全て開きたい場合、 FSOを使えば、Dirは使わ 1 2023/01/27 13:18
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CString型からdouble型への変換
-
CString から LPCTSTRの型に変換
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
文字コード(多言語化?)の取り...
-
テキストをhtml変換するには
-
文字列を quoted-printable 文...
-
漢数字の変換
-
SQLのデータで半角カナを全角に...
-
五十音の並べ替えsortを教えて...
-
Encode.pmで「髙」(ハシゴ高)...
-
SJIS->UTF8->SJISコード変換に...
-
VBScript文字列をSJISからUTF8...
-
vbwide(半角⇒全角変換)について
-
算用数字(半角)から漢数字へ...
-
r18文学賞は文字数ではなく、枚...
-
ファイル名の右側を変更したい ...
-
MacからWindowsへiTunesのデー...
-
Delphiの型変換
-
これはなんの文字コードでしょうか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CString から LPCTSTRの型に変換
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
SQLのデータで半角カナを全角に...
-
CString型からdouble型への変換
-
VBScript文字列をSJISからUTF8...
-
ローマ字からカナに変換する方...
-
テキストをhtml変換するには
-
gccでiconvを使った文字コード...
-
SJIS->UTF8->SJISコード変換に...
-
エクセルでの漢字(全角ひらが...
-
文字列を quoted-printable 文...
-
VB6にも「ToString」ってあり...
-
VBScript 全角英数記号→半角英...
-
16進数の文字列を文章に変える
-
Delphiの型変換
-
文字列が勝手にエスケープ文字...
-
ウイザードからのVBAでクエリー...
-
【PHP】全角記号を半角記号...
-
文字コードの変換によるレイア...
おすすめ情報