タブを任意の文字にする (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);
}
}

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