行頭の文字のみ検索対称にする方法

[4100]行頭の文字のみ検索対称にする方法 | 投稿者:SUBI | 投稿日:2010/01/30(Sat) 10:44:59
お世話になっております。

作業環境はWinXP、InDesignCS2、和文+欧文の合成フォントです。
特定のフォントの文章の中にある箇条書きの先頭につけていた中黒を、欧文のビュレットに変換して前後四分アキにしたいのですが、文章の中に使われている中黒をそのまま残して行頭の中黒のみに適用する方法がわからず困っています。
解決策として前に改行がある中黒を検索置換することを思いつきました、これだとフレームや表のセル内の最初の中黒は無視されてしまいます。
どうすれば行頭の中黒のみを指定できるのでしょうか?

//検索/置換設定のクリア
app.findPreferences = NothingEnum.nothing;
app.changePreferences = NothingEnum.nothing;

var keyword = "^p^5";  // 置換元の文字(改行+中黒)
var repWord = "^p^8";  // 置換後の文字(改行+ビュレット)
app.findPreferences.appliedFont = "フォント名";  // 置換元の書体
app.changePreferences.appliedCharacterStyle = "前後四分アキ";  // 置換後の文字スタイル
app.findPreferences.findText = keyword;
app.changePreferences.changeText = repWord;
app.activeDocument.search(app.findPreferences.findText, undefined, undefined, undefined, undefined, app.changePreferences.changeText);
» 1
[4103]Re: 行頭の文字のみ検索対称にする方法 | 投稿者:ミシマバイカモ | 投稿日:2010/01/31(Sun) 11:59:29
中黒を検索して、それが段落先頭の場合に置換処理でしょうか? CS2の場合は。

//検索/置換設定のクリア
app.findPreferences = NothingEnum.nothing;
app.changePreferences = NothingEnum.nothing;

var keyword = "^5";
app.findPreferences.appliedFont = "フォント名"; // 置換元の書体

app.findPreferences.findText = keyword;
app.changePreferences.changeText);
var hit_chars = app.activeDocument.search();
for (i = hit_chars.length - 1; i >= 0; i--) {
if (hit_chars[i].paragraphs[0].characters[0].index == hit_chars[i].index){
//段落先頭ならば置換処理
hit_chars[i].contents = String.fromCharCode(0x2022);
hit_chars[i].appliedCharacterStyle = "前後四分アキ"; // 置換後の文字スタイル
}
}
» 2
[4118]Re: 行頭の文字のみ検索対称にする方法 | 投稿者:SUBI | 投稿日:2010/02/02(Tue) 10:06:52
ミシマバイカモさん、ありがとうございます。
教えていただいたスクリプトで試してみました。

app.changePreferences.changeText);

ここでエラーが出てしまうので、いろいろ試したところこの1行を丸ごと削除して解決しました。
ばっちり希望通りの処理です。助かりました。
» 3
[4119]Re: 行頭の文字のみ検索対称にする方法 | 投稿者:ミシマバイカモ | 投稿日:2010/02/02(Tue) 12:50:33
SUBIさん、問題解決できてよかったです。

エラー箇所は、すみません、消し忘れです。
フォント名とか文字スタイルのところはコメントアウトして試していまして、// 置換後の文字スタイル の部分は掲示板に貼り付けた後で切り貼りして加えましたので、その時の残骸が残ったままになってしまっていました。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア