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

投稿:  著者:


今回も同じネタでPhotoshop CS/CS2版です。最初のサンプルは選択したレイヤーがテキストレイヤーの場合、最初のタブコードを...の文字に置換するものです。Photoshop CS2では複数のレイヤーが選択できますが、一番最後に選択されたものが対象になります。


layObj = activeDocument.activeLayer;
if(layObj.kind == LayerKind.TEXT)
{
reg = new RegExp(String.fromCharCode(9));
selText = layObj.textItem.contents;
layObj.textItem.contents = selText.replace(reg, "...");
}


テキストレイヤー内の全てのタブコードを置換する場合は、以下のようになります。

layObj = activeDocument.activeLayer;
if(layObj.kind == LayerKind.TEXT)
{
reg = new RegExp(String.fromCharCode(9), "g");
selText = layObj.textItem.contents;
layObj.textItem.contents = selText.replace(reg, "...");
}

...の文字ではなく任意の文字に置換する場合は、入力ダイアログを利用します。入力ダイアログを表示して置換する文字列を指定する場合は、以下のスクリプトになります。

str = prompt("文字を入れてください", "...");
layObj = activeDocument.activeLayer;
if(layObj.kind == LayerKind.TEXT)
{
reg = new RegExp(String.fromCharCode(9), "g");
selText = layObj.textItem.contents;
layObj.textItem.contents = selText.replace(reg, str);
}


選択したレイヤーだけではなく、他のレイヤーにあるタブも一括して置換することもできます。Photoshopの場合は、Illustratorとは異なりテキストは個別のレイヤーに分かれているため、一括して処理するには全てのレイヤーの情報を読み出して操作します。以下のサンプルは、最前面のドキュメントの全てのテキストレイヤー内のタブコードを、任意の文字列に置換するものです。

str = prompt("文字を入れてください", "...");
layObj = activeDocument.layers;
for (i=0; i< layObj.length; i++) {
if(layObj[i].kind == LayerKind.TEXT)
{
reg = new RegExp(String.fromCharCode(9), "g");
selText = layObj[i].textItem.contents;
layObj[i].textItem.contents = selText.replace(reg, str);
}
}


【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
コムスン大変ですねぇ。譲渡ついでに社名も変更するとよさそうです。
コムスン → 引っ込むスン
グッドウィルグループ → グッと冷えるグループ

photo
改訂第4版 Java Script ポケットリファレンス
古籏 一浩
技術評論社 2006-10-18
おすすめ平均 star
starJavaScript仮免者以上の方へ
starバランスの良いバイブル
star中級者向けです。

[改訂版] PHP ポケットリファレンス 改訂新版 SQLポケットリファレンス 標準DOMスクリプティング 基礎Ajax+JavaScript プロとして恥ずかしくないJavaScriptの大原則



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

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

by G-Tools , 2007/06/11