検索とか置換とか

ページ名:検索とか置換とか

語句を検索する

 Azukiには文章を検索するためのメソッドが存在している。
 AzukiControlの名前がazukiとして、以下のようにして文字を検索することができる。

 先頭から末尾に向かって検索したい場合は、次のように書く。

azuki.Document.FindNext([検索語句string],[開始位置int],[大文字・小文字の区別bool]);

 逆に、末尾から先頭に向かって検索したい場合は、次のように書く。

azuki.Document.FindPrev([検索語句string],[開始位置int],[大文字・小文字の区別bool]);

 検索語句と同じ語句を探した末、TextSegmentという形式で結果を得る。
 segmentという名前のTextSegment変数に、大文字と小文字を区別しない状態で、キャレット(カーソル)の位置から『こんにちは』という語句を検索して格納したい場合は、以下のように記述するとよい。

TextSegment segment = azuki.Document.FindNext("こんにちは",azuki.CaretIndex,false]);

 TextSegmentには、さまざまなintが格納される。

 segment.Beginに検索した語句の先頭位置にあたるint。
 segment.Endに検索した語句の末尾位置にあたるint。
 segment.Lengthに検索した語句の文字数にあたるint。

 この、取得したTextSegmentをもとに語句を選択したい場合は

azuki.SetSelection(segment.Begin,segment.End);

 ……と書けばいいだけなので、ものすごくラク。

 ちなみに末尾から検索して末尾から選択したい場合は、上記した中のBeginとEndの位置をひっくり返せばよい。

 それから、FintNextとFindPrevには正規表現も使うことができる。

語句の置換と削除

 Azukiは、Textに対してやる置換命令のReplaceにおける動作は普通なんだけど、Documentに対するReplaceは少々異なる動きをする。

 たとえば、azukiという名前のAzukiControlに対して、『ポッキー』という語句を『プリッツ』に書き換えたい場合。
 Text相手だとこんなかんじ。

azuki.Text.Replace("ポッキー","プリッツ");

 と、このように、なんのへんてつもない普通のReplaceとして書いて動作させる。

 これがDocumentを相手にすると、こんな記述になる。

azuki.Document.Replace("プリッツ",[置換する先頭の位置int],[置換する末尾の位置int]);

 そうなんです。指定範囲を置換する仕様。
 なのであらかじめポッキーの位置をFindNextなりFindPrevなりでTextSegmentに格納してからやると、やりやすい。

 ここでもTextSegmentは便利。segment.Beginとsegment.Endで先頭位置と末尾位置を指定できるので。

 削除も同じ命令を使ってやるようになっているみたいで、削除したいときはこの"プリッツ"を""にすると実質、範囲の削除になる。

 

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する

NG表示方式

NGID一覧