javascriptでの置換

[9640]javascriptでの置換 投稿者:ほんま 投稿日:2019/07/08 14:07:11
InDesigncc2017を使用しています。
javascriptでGREP検索で検索した半角数字を全角数字に文字種変換したいのですが、どのように設定したら検索した文字だけを変換できるのでしょうか。
以下にスクリプトを入力します。よろしくお願いいたします。

//検索条件と置換後の文字列との設定
app.findGrepPreferences.findWhat = "(?<![a-z,A-Z,\-,0-9\.])[0-9](?![0-9,\-,\.,\)])";


//文字種置換
app.changeTransliteratePreferences.changeCharacterType=FindChangeTransliterateCharacterTypes.FULL_WIDTH_ROMAN_SYMBOLS;

app.changeTransliterate();

//選択範囲
//var text = app.activeDocument.selection;
//for(var i = 0; i < text.length; i++) {
//text[i].changeTransliterate();
//}

//ドキュメント全体
for (var i = 0; i < app.activeDocument.pages.length; i++) {
var pageObject = app.activeDocument.pages[i];
for (var j = 0; j < pageObject.textFrames.length; j++) {
pageObject.textFrames[j].parentStory.changeTransliterate();
}
}
[9641]Re: javascriptでの置換 投稿者:お~まち 投稿日:2019/07/08 23:28:26
正規表現検索で検索した結果を文字種変換で利用することはできません。
やり方としては、
A. 検索結果のtext配列のそれぞれに対して文字コードを変更する
B. 正規表現置換の書式でOpenType全角字形を指定する(フォントが対応していれば)
が考えられます。
[9642]Re: javascriptでの置換 投稿者:(z-) 投稿日:2019/07/09 12:25:36
お~まちさんに追加でひとつ。
先にいったん
var result = app.findGrep();
しておき、
result配列(エレメントは検索結果のTextオブジェクト)をループして文字種変換

というのも有効かと思います。
[9643]Re: javascriptでの置換 投稿者:(z-) 投稿日:2019/07/24 12:06:18
スクリプト学習の面もあろうかと思って出しあぐねてましたが、
拙作「Munchkin(マンチカン)」というスクリプトで解決する案件ではありました。

http://ajabon.catfood.jp/?p=1825
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア