2015-06-24T09:32:40+09:00 [Wed]
--> [無芸DTPツール]
indesign 1桁&任意の桁数字のみ文字種変換
直した。
数字をどちらかに統一後に処理。
zh [0= 全角の海の中で任意の桁数の数字だけ半角(kumiに{1},{2,3}みたいに書く) 1= 半角の海の中で一桁のみ全角]
全角半角変更テーブルはいちいち作るようにしたので、zen_list,han_listに数を合わせて追加すれば、お好みの文字列も変更できる(死ぬまで使わない気がする)。
依然として全テキストフレーム対象。次はこれを直すつもり。
目標はインターフェイス的な何かを付けるところまで。あれが面倒くさい。
正規表現スタイルでかなりどうにでもなるので、意味がないと言えばないかも。
var zh = 0; var kumi = '2'; var zen_list = '0123456789'; var han_list = '0123456789'; var hl = han_list.length; var zen_han = {}; var uni_fie = {}; if(zh === 0){ var regexUni = /[0-9]/g; var regexRep = new RegExp("([^0-9])([0-9]{" + kumi + "})(?![0-9])","g"); for(i = 0; i < hl; i++){ zen_han[zen_list[i]] = han_list[i]; } for(i = 0; i < hl; i++){ uni_fie[han_list[i]] = zen_list[i]; } } else { var regexUni =/[0-9]/g; var regexRep = /([^0-9])([0-9]{1})(?![0-9])/g; for(i = 0; i < hl; i++){ zen_han[han_list[i]] = zen_list[i]; } for(i = 0; i < hl; i++){ uni_fie[zen_list[i]] = han_list[i]; } } pageObj = app.activeDocument.pages; for (j = 0; j < pageObj.length; j++) { for (k = 0; k < pageObj[j].textFrames.length; k++) { var txt = pageObj[j].textFrames[k].contents; var unified = txt.replace(regexUni, uniFunc); var result = unified.replace(regexRep, repFunc); pageObj[j].textFrames[k].contents = result; } } function uniFunc(){ return(uni_fie[arguments[0]]); } function repFunc() { var replist = arguments[2].split(''); var rpl = replist.length; var stx = arguments[1]; for(i = 0; i < rpl; i++){ var key = replist[i]; stx += zen_han[key]; } return(stx); }