引用符を変換する

引用符である"〜"を“〜”のように変換したい場合があります。InDesignなどDTPソフトではテキストファイルwo読み込んだ時に変換するかどうかの指定を行うことができますが、他のソフトでは対応していない場合がほとんどです。今回のスクリプトはHTMLファイルで引用符を置き換えるものですが、特定の条件付きです。
その条件は以下のようになっています。

(1) 動作するスクリプトはAdobe Photoshop CS, InDesign CS, AfterEffectsなどCS以降のアプリケーションのみ。

(2) 行頭が<でないこと

(2) の条件は具体的に書くと以下のようになります。

【OKな場合】
<tr><td>
"Sample"です。
</td></tr>

【駄目な場合】
<tr><td>"Sample"です。</td></tr>

つまり行頭が<かどうかで処理を分けているため、タグとまとめて記述されてしまっている場合には変換されないことになります。
サンプルを実行すると保存ファイル名、そして変換するファイル名を入力すれば自動的に変換が行われます。カッコの種類を変更したい場合には先頭の2行の&ldquo;と&rdquo;を変えてください。

LQ = "“";
RQ = "”";

この場合"Sample"は“Sample”に変換されることになります。
また、CSとCS2以降では実行するスクリプトの文字コードにも注意してください。CS2以降はUTF-8で、それ以前はアプリケーションによりけりですが、SHIFT JISでよいでしょう。

LQ = "&ldquo;"; // 開始カッコ
RQ = "&rdquo;"; // 閉じカッコ
LF = String.fromCharCode(13); // 改行コード
savefile = File.saveDialog("保存ファイル名を入れて下さい");
if (savefile)
{
savefileObj = new File(savefile);
flag = savefileObj.open("w");
if (flag == true)
{
filename = File.openDialog("変換するファイルを指定してください");
fileObj = new File(filename);
flag = fileObj.open("r");
if (flag == true)
{
while(!fileObj.eof)
{
text = fileObj.readln();
count = 0;
result = "";
if (text.charAt(0) != "<")
{
for (i=0; i<text.length; i++)
{
c = text.charAt(i);
if (c == '"')
{
c = LQ;
if (count & 1) c = RQ;
count++;
}
result += c;
}
}else{
result = text;
}
savefileObj.write(result+LF);
}
fileObj.close();
}
savefileObj.close();
}
}



[サンプルをダウンロード]