タブを任意の文字にする (Illustrator 10)

前回に続いてタブを...など任意の文字列に置換するスクリプトです。Illustrator 10の場合でも基本的には正規表現を使って置換することが可能です。異なるのはテキストブロックの扱いです。Illustrator CS/CS2ではテキストブロックはTextFrameという種類になっていますが、Illustrator 10ではTextArtItemという種類になっています。テキストブロックを処理する際には、選択されたものがテキストブロックかどうか調べてから行います。 以下のサンプルは選択された複数のテキストブロックの最初のタブコードを...に置換するものです。


sel = activeDocument.selection;
for (i=0; i<sel.length; i++)
{
selObj = sel[i];
if(selObj.typename == "TextArtItem")
{
reg = new RegExp(String.fromCharCode(9));
selText = selObj.contents;
selObj.contents = selText.replace(reg, "...");
}
}
文章全体に含まれるタブコードを置換する場合は以下のスクリプトになります。

sel = activeDocument.selection;
for (i=0; i<sel.length; i++)
{
selObj = sel[i];
if(selObj.typename == "TextArtItem")
{
reg = new RegExp(String.fromCharCode(9), "g");
selText = selObj.contents;
selObj.contents = selText.replace(reg, "...");
}
}

Illustrator 10ではCS/CS2と違いユーザーに文字を入力してもらうことができないため、頻繁に利用するものだけをスクリプトファイルとして用意しておくのがよいでしょう。この場合、
selObj.contents = sselText.replace(reg, "...");
の行の最後の方にある"..."を任意の文字列にすればOKです。以下のサンプルはタブコードを半角空白4個分に置換するものです。
sel = activeDocument.selection;
for (i=0; i<sel.length; i++)
{
selObj = sel[i];
if(selObj.typename == "TextArtItem")
{
reg = new RegExp(String.fromCharCode(9), "g");
selText = selObj.contents;
selObj.contents = selText.replace(reg, " ");
}
}

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