トークンの切り出し
|
Delphiのライブラリにはstrtokのようなトークンの切り出し
を行なう関数や手続きが無い為、自作することになります。
以下のコードはCopyとIsDelimiter関数を使ったトークンの
切り出し例です。
{$APPTYPE CONSOLE}
program Typing;
uses
SysUtils;
procedure TypingToken(S, Delims: String);
var
TokenIn : Boolean; // 進行中であるかのフラグ
TokenS, TokenLen, // トークンの開始位置と長さ
I: Integer;
begin
TokenIn := False;
TokenS := 0;
TokenLen := 0;
for I := 1 to Length(S) do
begin
if not IsDelimiter(Delims, S, I) then begin
if TokenIn then
Inc(TokenLen)
else begin
TokenS := I;
TokenLen := 1;
TokenIn := True
end
end else begin
if TokenIn then begin
Writeln(Copy(S, TokenS, TokenLen));
TokenIn := False;
TokenLen := 0;
end
end
end;
if Tokenlen > 0 then
Writeln(Copy(S, TokenS, TokenLen));
end; { TypingToken }
const
Delims = #9#10#13'[](){};, ';
var
Buf: String;
begin
while not EOF(Input) do begin
Readln(Buf);
TypingToken(Buf, Delims)
end
end.
※リダイレクトしない場合、最後に[Ctrl]+[Z]を入力
して下さい。
|
|