TxtAborn(テキストあぼ〜ん)というのを作成した。
これまでに作成したWebAborn(ウェブあぼ〜ん)は、Webブラウザで見るときに、見たくない文字列を置き換えて、見ずにすむソフトだった。
TxtAbornは、青空文庫などのテキストファイルに対して、見たくない文字列を置き換えて、見ずにすむテキストファイルを作るぞ。
その説明ではよくわからないな。具体的に見せて
こういうふうに使う。
TxtAborn.bat にテキストファイルをドラッグ&ドロップすると、ファイル名に「ab_」と付いた別のファイルを生成する。
「ab_」は aborn_ の略だ。 aborn_ というのはさすがにカッコよくない気がしたので ab_ にしたよ。
「ab_」がついたファイルは、WebAborn.user.jsに記録されているNGワードがある行を「■■■■■■」という文字列に置き換えてある。
以下は、「まんじゅう」「饅頭」をNGワードにしたときの変換前・変換後の比較だ。
複数行削れてるような?
これは右端で折り返して表示しているので、たくさん行があるように見えるけど、実際には2行だよ。
1行が長いときはかなり文章が削られてしまうんだね。
今のところ、改行文字単位で文字列置換するようにしてる。これでしばらく使ってみるよ。
WebブラウザのOperaでは、テキストファイル読み込ませて行単位で文字列置換、すでに できてたよね?
参考: http://d.hatena.ne.jp/itouhiro/20120720
でも、テキストファイルを生成しておくと、WindowsやAndroidの青空文庫ビューアーで見ることができるからね。縦書きでも見られるぞ。
Androidの「縦書きビューワ」 https://play.google.com/store/apps/details?id=org.example.android.npn2SC1815J.VerticalTextViewer&hl=ja
文章は「太宰治 困惑の弁」 http://www.aozora.gr.jp/cards/000035/card18349.html
ダウンロードはどこ?
ダウンロードは
https://github.com/itouhiro/txtaborn
の画面右下の[(↓) Download ZIP]をクリックすればいいよ。
追記 2013-10-17
バージョンアップして、モードを2つ追加した。
置換方法として
- replace_words 単語単位で置き換え(初期値)
- delete_one_line 1行まるごと消す (まるでその行がなかったかのようになる)
- replace_one_line 1行まるごとを1語に置き換え(以前の動作)
の3種類ある。txtaborn.jsのmodeの値で変更できる。
modeがreplace_wordsのときは以下のようになるよ。
ねえ、これってテキストエディターで文字置換するのと同じじゃないの?
同じだよ。WebAborn.user.jsに登録された複数のNGワードを文字置換してくれるのが特徴だから、WebAborn使ってない人には意味ないね‥‥。
あとTxtAbornにはサンプルとして、テキストファイル SampleText.txtと、WebAborn.user.js(「饅頭」「まんじゅう」の2語のみ登録)を追加しておいたよ。これを使えば正しく動作するかチェックできるぞ。
これってファイル一つずつしか処理できないけど、たとえば100個のテキストファイルをまとめて処理したいときはどうするの?
簡単な構造で説明するか。
C:\a\Dazai_KonWakuNoBen.txt
があったとするぞ。
まずやることは
C:\a
に'txtaborn'フォルダを置く。
すると、TxtAborn.batファイルは
C:\a\txtaborn\TxtAborn.bat
に位置することになる。
で、repeat_txtaborn.batを
C:\a\repeat_txtaborn.bat
に配置する。
中身は、
for %%F in (*.txt) do txtaborn\TxtAborn.bat "..\%%F"
だな。
TxtAbornが実行されるフォルダからみると「*.txt」の個々のファイルは一つ上のフォルダにあるから、%F の前に「..\」が必要なんだ。あとbatファイルに書くときは %F を %%Fと書く。ファイル名に空白があったときのために%%Fをダブルクォーテーションで囲む。
次に TxtAborn.bat
、これはtxtabornフォルダーにあるが、この最終行の
pause
を削除する。これがあると1ファイル処理するごとにEnterかスペース押さなくちゃならないので面倒だからな。
で、あとはrepeat_txtaborn.batをダブルクリック。
私の場合、まずコマンドプロンプトで
C:\a> for %F in (*.txt) do echo %F
とやって動作を確かめたりするよ。