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

タブを...や___など任意の文字列に置換するサンプルです。Illustrator CS/CS2では文字列の一致検索や置換処理に正規表現(正則表現)を利用することができます。正規表現を使ってタブコードを特定の文字に置換します。以下のサンプルは文字列の最初に現れたタブを...に置換します。使い方は置換対象となるテキストブロックを選択してからスクリプトを実行します。複数のテキストブロックを選択して処理できるようになっています。


sel = activeDocument.selection;
for (i=0; i<sel.length; i++)
{
selObj = sel[i];
if(selObj.typename == "TextFrame")
{
reg = new RegExp(String.fromCharCode(9));
selText = selObj.contents;
selObj.contents = selText.replace(reg, "...");
}
}
上記のサンプルでは最初に現れたタブコードしか置換しないため、複数行にあるタブコードを置換する場合には以下のサンプルを使ってください。regExp()の2番目に"g"を指定すると全文が対象になります。

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

...ではなく任意の文字列に置換したい場合もあるでしょう。その場合は入力ダイアログを表示して、そこに置換したい文字列を指定します。以下が実際のサンプルです。入力ダイアログはIllustrator CS以降でしか利用できません。残念ながらIllustrator 10では駄目です。
str = prompt("文字を入れてください", "...");
sel = activeDocument.selection;
for (i=0; i<sel.length; i++)
{
selObj = sel[i];
if(selObj.typename == "TextFrame")
{
reg = new RegExp(String.fromCharCode(9), "g");
selText = selObj.contents;
selObj.contents = selText.replace(reg, str);
}
}

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