2005年07月28日

文字列と出現回数から文字列の位置を取得する方法

Delphi標準関数Posを応用した関数です。
指定された文字列から特定の部分文字列を検索し、
検索ヒット回数が指定された回数になった場合、
その部分文字列の文字位置を戻す関数です。

な〜んのことはありません。
Pos関数に検索ヒット回数の引数が追加されただけですが、
この関数を利用する局面は、以外にもたくさんあるのです。

今回ご紹介する関数は、
「文字列からトークンを取得する方法」
などの関数と組み合わせることで、
文脈自由型のコンパイラやインタープリタの文脈解析、
プログラムの挙動を制御するINIファイルの解析など、
幅広い問題の解決にご利用いただけるかと思います。


ではさっそく、プログラムを紹介しましょうね。

_Posソースは【続きを読む】をクリック!

関数仕様
function _Pos(
 pSubStr, pSource: String; pCount: Integer): Integer;
説明
pSourceで指定された文字列から、pSubStrで指定された部分文字列を検索し、検索ヒット回数が指定されたpCountと同じ場合、pSource中の部分文字列の位置を戻します。部分文字列が見つからない場合や、検索ヒット回数の条件を満たさない場合、関数はゼロを戻します。
使用例
procedure TForm1.Button1Click(Sender: TObject);
var
 lText: String;
 lIndex: Integer;
begin
 lText := 'Hello! This is guy. sorry? My Name is guy.';
 // 上記文字列から
 // 1回目にヒットした'guy'の文字位置を取得する。
 // 文字位置は'16'が戻されます。

 lIndex := _Pos('guy', lText, 1);
 Edit1.Text := Format('%d', [lIndex]);
 // 上記文字列から
 // 2回目にヒットした'guy'の文字位置を取得する。
 // 文字位置は'39'が戻されます。

 lIndex := _Pos('guy', lText, 2);
 Edit1.Text := Edit1.Text + Format(',%d', [lIndex]);
 // 上記文字列から
 // 3回目にヒットした'guy'の文字位置を取得する。
 // 文字位置は'0'が戻されます。

 lIndex := _Pos('guy', lText, 0);
 Edit1.Text := Edit1.Text + Format(',%d', [lIndex]);
end;

関連書籍


Copyright guy@かしらもんじ でぇ〜

続きを読む
posted by guy at 06:59 | 文字列操作編

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。