swriter.exe - 超代筆君 MEGA-Mix
 Copyright (c) YumemiYougie-Project

 


テキスト文字置換

 テキストファイル内の文字列を別の文字列と差し替えます。

正規表現では対応できない場合や、一連の変換を一度に行いたい場合などに使用します。

 

手順


まだサンプルをダウンロードしていない場合は、ダウンロードページから「チュートリアルサンプル」をダウンロード。

replace フォルダを開きます。

text フォルダにサンプルテキストが入ってます。

 

このサンプルには5つのサンプルが含まれています。

  サンプル1 通常置換

  サンプル2 \nを含む置換

  サンプル3 その他の特種条件置換

  サンプル4 \tsを含む置換

  サンプル5 正規表現置換

 

 

サンプル1 通常置換

バッチファイル


replace.swb
[script]
replace_rem  replace.ini  \out\

[files]
text\*.*

出力パスが指定されているので置換後のファイルは out フォルダに出力されます。

 

置換設定ファイル バッチファイルで指定されています


replace.ini
学校        学園

このサンプルでは「学校」を「学園」に置換しています。

設定ファイルには1行1項目。間はタブで区切ります。記号[\t\n]が有効。詳細はドキュメントを参照して下さい。

 

バッチファイルを実行します。

 

実行結果

NR_DAY01.TXT replaced.18
NR_DAY02.TXT replaced.14
NR_DAY03.TXT replaced.3
NR_DAY04.TXT replaced.20
NR_DAY05.TXT replaced.5
NR_DAY08.TXT replaced.10
Completed...

結果にはどのファイルをいくつ置換したかを出力します。

 

out フォルダに「//R」でgrepをかけた結果

NR_DAY01.TXT(79): 学園にそんなもん持ってきちゃいけないな。 //R:学校
NR_DAY01.TXT(120): 今でもたまに学園行ってる夢を見るんだよな。\rでもやっぱ現実は辛いわ・・・。 //R:学校
NR_DAY01.TXT(151): \cls「学園どうだった?」 //R:学校
NR_DAY01.TXT(387): 「今回私達に課せられた任務は、如月中学園を調査し機密情報を盗み出す事」 //R:学校
NR_DAY01.TXT(442): choif "如月中学園について", FLG_SCHOOL==1, sc01_3_school //R:学校
NR_DAY01.TXT(559): FLG_SCHOOL=1 // 如月中学園について1 on //R:学校
NR_DAY01.TXT(648): // 如月中学園について1 //R:学校
NR_DAY01.TXT(650): 「しかしなんでまた中学園にそんなもんが関係するんだ?」 //R:学校
NR_DAY01.TXT(664): // 如月中学園について2 //R:学校
NR_DAY01.TXT(673): // 如月中学園について2 //R:学校
NR_DAY01.TXT(737): 「学園内を探索して間取りを把握しておいてちょうだい」 //R:学校
NR_DAY01.TXT(739): 「学園案内と建設時の青写真だけじゃ細部までは分からないから」 //R:学校
NR_DAY01.TXT(790): 「わからない、何か普通の学園とは違う物を感じはするんだけど・・・」 //R:学校
NR_DAY01.TXT(804): あの学園は私立で国の直接的な管理下には置かれていない。その割には何か組織的な匂いを漂わせているらしい。 //R:学校
NR_DAY01.TXT(806): 俺達捜査員を統括する組織は国立の学園をいくつか配下に置いている。 //R:学校
NR_DAY01.TXT(809): 話が外れたが、あの学園はそういった組織の管理下にあるのではないかという疑いがあるが、背後関係がよく見えない。 //R:学校
NR_DAY01.TXT(813): いくつか確認もされているが、学園はそのどれとも繋がりが見えず、もしかしたら新たな勢力なのかもしれなかった。 //R:学校
NR_DAY01.TXT(816): というわけで当面の仕事は学園内部の状況の把握だ。まずは校長を探すぜ。 //R:学校
NR_DAY02.TXT(68): 先生にその間、間取りを覚えるために学園内を歩き回ってみてよいかと進言したらあっさりOKされた。 //R:学校
NR_DAY02.TXT(76): 小鳩から学園の構造については聞いている。 //R:学校
NR_DAY02.TXT(247): 捜査って事でちょっと気張っていたが、よくよく考えれば生徒が自分の学園の事を知りたいと思う事に違和感なんてないよな。 //R:学校
NR_DAY02.TXT(363): 学園特有の殺伐とした雰囲気もない。 //R:学校
NR_DAY02.TXT(572): そう、俺はこれから夜の学園に潜入する。 //R:学校
NR_DAY02.TXT(577): 学園までは普通に歩くぜ。 //R:学校

変換前の状態が //R: の後に残されています。

記号を別のものに変えたい時はソースを直接書き換えて下さい。

変換前の状態を残す必要がない場合は「replace_rem」ではなく「replace」を使います。

 

以上が最も単純な変換の書式です。バッチ処理できるという以外は普通の置換できる事と何も変わりません。

 


サンプル2 \nを含む置換

バッチファイル2を実行します。


replace2.swb

 設定ファイル replace2.ini が使われます。


replace2.ini
talk(        voice(00000)\ntalk(

 "\n" は改行です。ここではtalkコマンドの前に1行、voice(00000)を挿入しています。

 

実行後のテキスト

voice(00000)
talk(小鳩) //R:talk(
\cls「それじゃ、任務の話をするよ」

voice(00000)
talk(鳴海) //R:talk(
「ああ」

voice(00000)
talk(小鳩) //R:talk(
「今回私達に課せられた任務は、如月中学校を調査し機密情報を盗み出す事」

voice(00000)
talk(鳴海) //R:talk(
「わざわざ生徒に化けて潜入してるのに、それだけか?」

sc01_3_duty:
if(VAL_DUTY == 0)then
  // 任務について1
  voice(00000)
  talk(鳴海) //R:talk(
  「その問題ってのは?」

赤字の部分に注目して下さい。

元のtalkがタブでインデントしてある場合、voice()とtalk()との間に同数のタブが挿入され、インデントが狂う事がありません。

 


サンプル3 その他の特種条件置換

バッチファイル3を実行します。


replace3.swb

 設定ファイル replace3.ini が使われます。


replace3.ini
talk(\knj)     serif("\knj")

 \knj は全角文字を認識します。この場合、()の引数をそのままに前後を置換しています。(後ろは閉じ括弧だけなので同じですが、続けて文字を挿入する事ができます)

talk2(小鳩)
「違うわよ。荷物の整理してたの」

serif("鳴海") //R:talk(\knj)
なんか食ってるじゃねぇかよ。

talk2(小鳩)
\cls「学校どうだった?」

serif("鳴海") //R:talk(\knj)
「かったりーよ」

talk2(小鳩)
\cls「あはは、あんたホントの学生みたいよ」

serif("鳴海") //R:talk(\knj)
\clsうるせーな!!\rこれでも気にしてんだからよ。

 

 この他にも数値のみ、ダブルクォーデションで囲まれた部分など、引数内が不明な場合に利用できるものがあります。

オープンソースなので必要な判定を部分的に追加する事も可能です。

 


サンプル4 \tsを含む置換

バッチファイル4を実行します。


replace4.swb

 設定ファイル replace4.ini が使われます。


replace4.ini

pocket_gosub\ts0,feed_out    rame_effect\ts0,EFF_FEEDOUT
pocket_gosub\ts0,feed_in     frame_effect\ts0,EFF_FEEDIN

 \ts は複数のタブを表わしています。

変換元にいくつのタブがあるかが不定の場合、\ts で拾う事ができます。

pocket_gosub     0,feed_out
steps 30
pocket_gosub     0,feed_in

  ↓

frame_effect     0,EFF_FEEDOUT //R:pocket_gosub\ts0,feed_out
steps 30
frame_effect     0,EFF_FEEDIN //R:pocket_gosub\ts0,feed_in

変換後の方にも \ts を設定しておけば、元のタブと同数のタブを挿入できます。

 


サンプル5 正規表現置換

バッチファイル5を実行します。


replace5.swb

 設定ファイル replace5.ini が使われます。


replace5.ini

\([0-9]\)    \(数字のみの引数だね\)

regex正規表現の書式が有効です。

JRE等とは若干相違する局面がありますので、ご注意下さい。

*正規表現として正しくない書式を設定した場合、システムがハングアップする可能性があります。
 使用する場合は書式に注意し、元データのバックアップを取っておくようお願いします。

 

*現仕様では全角文字を含むテキストでは正しくマッチしません。

 

replace(replace_rem) の機能と併用する事は出来ません。