2010年3月12日金曜日

検索置換のコピペ合体スクリプト(^^;

Page2010で実演したたけうちとおるさんのスクリプトは全角数字→半角数字置換だったけど、複数文字の検索置換を目的としたものだよな(違う?)。複数文字の一括検索置換を実演すればもっとアピールできたのに~~。
findrepAry.push("渡辺,渡邊");
findrepAry.push("読売,讀賣");
できるんじゃないの? で、aaltで指定すれば異体字に置換できそうな(やり方は分からんが)。まぁ、この辺りは後回しにして

古旗さんのInDesign CS3自動化作戦(全ページにある全角の数字を半角の数字にする)Adobe Illustrator CS3 + JavaScript 自動化サンプル集を合体してScriptを作ってみた(多分、動作するべ)。同じ人が違う書き方をしただけであって著作権的にはどうなのか疑問ではあるのだが。。。
なんでこんなことをしたかというとIllustratorの自動化サンプル集の書き方が 全角文字コードを減算する なんて難しい書き方をしていたため(^^;
(function(){
 var selObj = app.activeDocument.selection;
 for(var i=0; i<selObj.length; i++){
  if (selObj[i].typename == "TextFrame") {
   selObj[i].contents =selObj[i].contents.replace(/[0-9]/gi, function(chr, ptr, allStr){
    var hankaku = "0123456789";
    var zenkaku = "0123456789";
    var n = zenkaku.indexOf(chr);
    return hankaku.charAt(n);
   });
  }
 }
})();

で最初、(function()に疑問が出てきた。なんでfunction()ではダメなのか? 
この説明がpdf本にないためググりました。
(function(){})() と function(){}()

function() {}()
と書くと function() {} が式ではなく、文として解釈されてしまう
(function(){})()
と書いてやると function は式になる

下地がないため亀足で進めてます(^^;

1 件のコメント:

茶尾 さんのコメント...

WinXPのCS4ではreturn "\"+n;でエラー番号:4、終了していない文字列型の定数ですのエラーが発生。