マクロの検索置換でゴミを入れてしまう
-
お世話になっております。
ずっとMeryを使わせていただき、大変重宝しています。ところで、検索置換をマクロで行っているのですが、半角カッコの置換時に、語句の間に無用なキャラクタが混入してしまいます。お手数ですが現象を確認していただければ幸いです。
マクロの例:
if (! document.selection.Text)
document.selection.SelectAll();
var map = [
["(","("],
[")",")"],
];
var s1 = document.selection.Text;
for (var i in map) {
s1 = s1.split(map[i][0]).join(map[i][1]);
}
document.selection.Text = s1;置換用文字列:
日時 10月1日(土)
備考 雨天決行(雨具用意)コース変更あり
連絡 03(1234)5678
予備 03(1234)1234置換結果:
日時 10月1日(土)
備考 雨天決行(雨具用意)コース変更あり
連絡 03(1234)5678
予備 03(1234)●1234Meryの画面上では●の位置に半角スペースのようなものが2字分混入してしまいます。
エンコードがShiftJISだとその2字が黄色く表示されます。UTF-8などユニコードにすれば消えます。半角カッコ閉じを置換した場合のみ起きますが、前後の文字と関連する挙動なのか、上の通りで必ずしも法則がある訳でもないようです。
何か解決の手掛かりがお分かりになるようでしたらご教示をお願いいたします。| 田中 | 返信 -
Mery のご愛用ありがとうございます。
例のテキストをシフト JIS で保存して、マクロを実行してみましたが特に問題なく置換できました。マクロ的には問題ないような気がするのですが… ^^;
半角かっこを全角かっこに置換するマクロ、他の方法でも書いてみました。
---- sample1.js ----
// javascript の置換を使用するタイプ
with (document.selection) {
if (!Text)
SelectAll();
Text = Text.replace(/\(/g, "(").replace(/\)/g, ")");
}
------------ sample2.js ----
// Mery の置換機能を使用するタイプ
with (document.selection) {
if (!Text)
SelectAll();
Replace("(", "(", meFindNext | meReplaceSelOnly | meReplaceAll);
Replace(")", ")", meFindNext | meReplaceSelOnly | meReplaceAll);
}
--------↑これらでも結果が同じなら、元のファイルに何か制御コードのような文字が混入しているか、半角かっこのように見えて実は半角かっこじゃない文字が使用されているとかが考えられますね。
| Kuro | 返信 -
>クロ様
返信遅れてしまい失礼しました。
そして、上記の現象についてご報告いたしますと、大変恐縮でお恥ずかしいお話しですが、完全に私の確認ミスでした。
具体的には、検索置換の候補がズラズラあるなかで、候補の下位(置換順序的には後)に同じ語句があり、いわば二重に置換するような状況にありました。
ちなみに「半角スペースみたいなもの」は、Adobe InDesign独自の特殊文字です。
本当に失礼しました…。今後とも愛用させていただきます。| 田中 | 返信 -
ご返信ありがとうございます。
なるほど、そういうことでしたか。Mery の不具合でなくて一安心です。> 具体的には、検索置換の候補がズラズラあるなかで、候補の下位(置換順序的には後)に同じ語句があり、いわば二重に置換するような状況にありました。
やはり単純なカッコの置換ではなく複数の検索置換を行うためのマクロだったのですね。map を使用されているからもしかしてとは思いましたが、お力になれずすみません ^^;
> 本当に失礼しました…。今後とも愛用させていただきます。
いいえー、お気づきの点などございましたらお気軽にご投稿くださいね。
今後ともよろしくお願いいたします。| Kuro | 返信