• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキスト書き換えのプログラム)

テキスト書き換えのプログラム

このQ&Aのポイント
  • テキストファイル内の内容を一括で置き換えるためのプログラムについて教えてください。
  • 特定のパターンの文字列を別の文字列に置換したい場合、どのようなプログラムを作成すればよいのでしょうか?
  • 既存のソフトウェアを使用せずに、テキストファイルの書き換えを行うプログラムについて詳細を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.4

「既存のソフトウェアに頼らず」というのは確かにどう解釈していいか悩むところです。 とはいえ、ここはとりあえず極めて身勝手に 汎用のプログラミング言語ならたとえOS標準のものでなくとも「既存のソフトウェア」ではない(といってもこれもかなりあいまいではありますが) と解釈させていただき、 Windows XP において なでしこ(1.5332) で書いた例を示します。 ###ここから### 対象フォルダはマイドキュメントでフォルダ選択 対象ファイル群は対象フォルダ&「*.txt」のファイル列挙 もし(対象ファイル群の配列要素数)が0ならば   終わる エラー監視 エラーならば   もし書込ハンドル<>「」ならば     書込ハンドルをファイルストリーム閉じる   エラーメッセージを言う   終わる 書込ハンドルは「」 対象ファイル群で反復   対象ファイルは対象フォルダ&それ   対象一時ファイルは対象フォルダで対象ファイルのユニークファイル名生成   書込ハンドルは対象一時ファイルを「書」でファイルストリーム開く。     対象ファイルを毎行読んで反復     一行はそれ     もし一行が「AAA[ {タブ}]=[ {タブ}][1-9]##*」にワイルドカード一致ならば       一行の「[1-9]##*」を「0」にワイルドカード置換して一行に代入     書込ハンドルで一行&改行をファイルストリーム書く   書込ハンドルをファイルストリーム閉じる   書込ハンドルは「」   対象ファイルを(対象ファイルを「.bak」に拡張子変更)にファイル名変更   対象一時ファイルを対象ファイルにファイル名変更 終わる ###ここまで### 念のため使用時の注意点を書きますが、テキストファイルと同じファイル名で拡張子が.bakのファイルがあると、上書きされます。また、元のファイルの最後の行に改行がない場合置換後のファイルには改行が付加されます。

参考URL:
http://nadesi.com/
utarininja
質問者

お礼

具体的かつ簡潔に書いていただきどうもありがとうございます。 これでやっていきたいと思います。 大変どうもありがとうございました。

その他の回答 (3)

  • OKWaaave
  • ベストアンサー率32% (90/276)
回答No.3

テキストファイルの置換ならテキストエディタを使うのが一番。 例えば無料で使えるEmEditor Freeを使って画像のような置換処理をすれば一発終了。 プログラムを作る必要なんてない。

参考URL:
http://jp.emeditor.com/modules/download2/rewrite/tc_5.html
  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.2

既存のソフトウェアに頼らずって、アセンブラもコンパイラも使わないんです? 機械語で基本的な入出力から作ることになりますが‥‥。 揚げ足を取ってるのではなく、杓子定規に解釈するとそうなる、と言ってます。 質問者さんの要求がいまひとつ理解できません。 既存のソフトウェアを頼っていいならsedを使えば1行で済みますね。 sed /AAA[ \t]=[ \t][1-9][0-9][0-9][0-9]*/AAA = 0/ 正規表現が使えるテキストエディタでも同様に可能です。

utarininja
質問者

お礼

sedですか、かなり取っ掛かりになる部分ができました。 大変ありがとうございます。

回答No.1

>プログラムも色々なものあると聞きまして。 >もし出来ましたら >上記のようなものだとこのようになる、といった具体的な記述など、 >書いて見せて頂ければ有難いです。 以下のようなアルゴリズムになる。 1.読み込みたいファイルをリードモードで開く 2.結果ファイルを新規作成モードで開く 3.入力ファイルから1行読み込む。入力が尽きたら10.へ 4.読み込んだ行の先頭3文字が「AAA」か調べる。違うなら9.へ 5.行の4文字目以降「=」が現われるまで、タブとスペースを読み飛ばす。タブもスペースも「=」も現われなかったら9.へ 6.「=」の次から、タブとスペースを読み飛ばす。 7.タブでもスペースでもない文字が現われたら、そこ以降の文字列を「数値に変換」してみる。変換できなかったら9.へ 8.変換した結果、100以上で、かつ、後ろに文字が残っていないなら「AAA = 0」を結果ファイルに出力して3.から繰り返し 9.入力した行をそのまま結果ファイルに出力して3.から繰り返し 10.入力ファイルと結果ファイルを閉じる 11.入力ファイルを削除して、結果ファイルを入力ファイルの名前にリネームする あとは「使用する言語に合わせて、アルゴリズム通りに書くだけ」です。

utarininja
質問者

お礼

具体例を書いていただき大変助かります。 参考にさせていただきます。

関連するQ&A