2005年07月26日

文字列から文字要素(トークン)を取得する方法

検索エンジンのキーワード欄に入力された文字列や、
CSVファイルのようなカンマ、タブで区切られた文字列から、
各文字要素(トークン)を取得する方法をDelphiで紹介します。


私が大学生だった頃、
AI(人工知能)なる言葉やLISP言語が流行していました。
このAIの研究に没頭されていた教授から、
夏休みにインタープリタをつくりなさいという課題を与えられ、
面白半分、悩み半分で取組んだ思い出があります。

今回ご紹介する関数は、
CVSファイルの文字列トークン取得から、
文脈自由型のコンパイラやインタープリタの文脈解析まで、
幅広い問題の解決にご利用いただけるかと思います。
また、このアルゴリスムは
初級情報処理技術者資格試験にも
出題されるたことがありますよ。


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

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

関数仕様
function _GetToken(
 var pSource: String; pDelimiter: String): String;
説明
pSourceで指定された文字列から、pDelimiterで指定された区切り文字こどに文字列要素を取り出し戻します。文字列要素を取り出した後、入力されたpSourceは、始めに見つかった区切り文字以降の文字列に再編集されます。pSourceで指定された文字列から文字列要素を取り出せない場合、関数は空の文字列を戻します。pDelmiterには区切り文字を複数指定できます。
使用例
procedure TForm1.Button1Click(Sender: TObject);
var
 lText,
 lToken: String;
begin
 // 'Hello, This is guy.'の文字列から' ,.'を区切り文字とし、
 // 'Hello','This','is','guy'の各文字トークンを取得する。

 lText := 'Hollo, This is guy.';
 while (lText <> '') do
 begin
  lToken := _GetToken(lText, ' ,.');
  if (lToken = '') then
   Break;
  Memo1.Lines.Add(lToken);
 end;
end;

関連書籍


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

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

広告


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

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

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


×

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