お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"文字列から任意の文字を削除"



みなさん、こんにちは。fumikaです。




ある文字列の中から、不要な文字だけを削除します。
削除できる文字は 1バイト文字だけで、複数指定できます。
Ansi 対応で2バイト文字の2バイト目を削除してしまうなんてことはありません。

type
  TCharSet = set of Char;

function AnsiTrimCharSet(const S: string; CharSet: TCharSet): string;
var
  I, J: Integer;
  DB: Boolean;   
begin
  J := 0;
  DB := False;
  SetLength(Result, Length(S));
  for I := 1 to Length(S) do begin
    if IsDBCSLeadByte(Byte(S[I])) then begin
      DB := True;
      Inc(J);
      Result[J] := S[I];
    end else begin
      if DB then begin
        Inc(J);
        Result[J] := S[I];
        DB := False;
      end else begin
        if not (S[I] in CharSet)  then begin
          Inc(J);
          Result[J] := S[I];
        end;
      end;
    end;
  end;
  SetLength(Result, J);
end;


引数の CharSet には、削除したい文字を集合で指定します。
例) [' ', '*', #10, #13]


   平成11年2月25日(木)  fumika(YRK00111@nifty.ne.jp)
         ★☆★ http://www2m.biglobe.ne.jp/~fumika/ ★☆★

Original document by fumika    氏 ID:(YRK00111)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum