クリエイター手抜きプロジェクト[131]Illustrator 10編 タブを任意の文字にする/古籏一浩

投稿:  著者:  読了時間:3分(本文:約1,400文字)


前回に続いてタブを...など任意の文字列に置換するスクリプトです。

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, " ");
}
}


【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/ >
前々から安倍総理、何かに似ていると思ってましたが、やっと分かりました。
横顔が悪い魔法使いのおばあさんにそっくり...

photo
JavaScriptテクニックブック―すぐに使える
古籏 一浩
シーアンドアール研究所 2007-04

WEB+DB PRESS 総集編 [Vol.1~36] まるごとJavaScript & Ajax ! Vol.1



photo
Ajaxライブラリリファレンス
古籏 一浩
ビー・エヌ・エヌ新社 2007-01

まるごとJavaScript & Ajax ! Vol.1 標準DOMスクリプティング JavaScript+DOMによるWebアプリデザインの基礎 Ajaxテクニックブック DHTML & AJAX アイデア見本帖 ワンランク上のWebインターフェイスを実現する PHPによるJavaScriptを書かないAjax

by G-Tools , 2007/06/04