• 締切済み

複数文字列の一括置換?

置換とは少々違うのかもしれませんが… ファイルA: あいうえお title1 かきくけこ title2 さしすせそ title3 たちつてと title4 ファイルB: 1 アイウエオ 2 カキクケコ 4 タチツテト ファイルC: あいうえお アイウエオ かきくけこ カキクケコ さしすせそ title3 たちつてと タチツテト * ファイルは全てテキスト形式です。 Aのテキストを、Bを使ってCのように一気に変換したいのですが、何か良い方法は無いでしょうか? (変換する内容がBに無い場合もありえますので、その場合の処理も指定したいです。) 手軽に行える方法(ソフト?)等があると助かります。 ちなみに今は、 ・Aのテキストのtitle部分を削除する ・Tab区切りに変える ・エクセルに貼り付ける ・vlookup関数で変換 とやっていますが、ファイル数が多く大変です。 実際はAの内容はもっと複雑で、vlookupが使えるように無理矢理Tab区切りにしているので、変換後にもとの形に戻すのが難しいです;;

みんなの回答

noname#52504
noname#52504
回答No.3

下記のフリーソフト『Repl-Ace』には「置換計画」という機能があって、 検索語と置換語のタブ区切テキストをインポートして、 複数パターンの置換処理を連続して行うことができます。 ご質問のケースですと、 まず、ファイルBをExcel等で整形して title1 アイウエオ title2 カキクケコ title4 タチツテト というようなタブ区切テキストファイルを作り、 『Repl-Ace』にインポート、ファイルAについて置換、 という流れになります。 ※特定のファイルを指定しての処理も可能ですが、  選択したフォルダ内の全ファイルについて一括処理することを既定にした作りなので、  対象外のファイルを含むフォルダに不用意な処理をすると  深刻な結果をもたらす可能性があります。ご注意ください。 Repl-Ace Documents (Ver.4.2.2.0) http://www.vector.co.jp/vpack/browse/pickup/pw6/pw006046.html

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1のお礼・補足を読むと、質問文章を読んで回答すると見当はずれの回答になりますね。質問表現はしっかりしてくださいよ。 質問のように、 Aファイの列とBファイルの列との同じ行が、置換前ー>置換後の関係にあるならと思いましたが、そうでなく、あくまで質問者のイメージであって、実際のAファイルの言葉・文章は、文章の中に不定位置に「散りばめられている」ようですね。 ーー そうであれば、全文から逐一Aファイルの言葉を捜し、Aファイルの言葉からBファイルの言葉を探して、変更後をBファイルから探して見つけ、置き換えるという作業を延々と繰り返すより他ない。 VBA・VBでも上級のプログラム力がいると思います。どちらかといえば エクセルで無く、ワードVBAがそれにふさわしいが、ワードVBあを勉強できますか。 ーー それに上記のロジックを、素人的にプログラムに実現(組む)と、処理時間がやたらにかかりはしないかと心配します。 こういう分野・テーマは、(文章の中から語(重複あり)を発見する)特有のアルゴリズムがありそうで、ベースになる、本格的な情報工学的素養が必要なように思います。類推で言えば正規表現の利用とかいうような。 http://wpedia.search.goo.ne.jp/searchlist.html?MT=%A5%D1%A5%BF%A1%BC%A5%F3%A5%DE%A5%C3%A5%C1&mode=3&kind=epedia&page_num=1 「パターンマッチング アルゴリズム」などとかで照会 ーー http://www.forest.impress.co.jp/article/2001/01/16/texteditor.html のような(ただしこの質問に適しているというのではありません)、質問に適したテキストエディターを探すのはどうでしょうか。

noname#46899
noname#46899
回答No.1

Accessなどのリレーショナルデータベースでやることです。 社員コードから氏名を呼び出すなど、リレーショナルデータベースでは普通にやっていることです。

noname#251034
質問者

補足

すみません。例に挙げた形が曖昧(簡略化しすぎ)でした。 ファイルAはHTMLやXMLです。変換したい部分は「test="title1"」の「title1」(属性値の部分)の様な形です。 ファイル内に綺麗に並んでいるわけではないのですが、Accessでもできますでしょうか?