[Delphi] Copy関数 文字列の切り出し




トップページへ

Delphiの「文字列の一部の文字を取得(部分取得)できる Copy 関数」についてです。

※全てのDelphiで動作する保証はありません。また、内容に関し管理人は全ての責任を負いかねます

 

Delphiメニューへ戻る

 

Copy関数のサンプル1

フォーム上に TButton を4つ配置し、それぞれの OnClick に下記を記述しました。

 

procedure TForm1.Button1Click(Sender: TObject);
var
    st: String;
    r_st: String;
begin
    st := 'Japan';
    r_st := Copy(st, 1, 3);

    ShowMessage(r_st);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
    st: String;
    r_st: String;
begin
    st := 'がんばれ日本';
    r_st := Copy(st, 1, 3);

    ShowMessage(r_st);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
    st: String;
    r_st: String;
begin
    st := 'Japan';
    r_st := Copy(st, 2, 3);

    ShowMessage(r_st);
end;

procedure TForm1.Button4Click(Sender: TObject);
var
    st: String;
    r_st: String;
begin
    st := 'がんばれ日本';
    r_st := Copy(st, 2, 3);

    ShowMessage(r_st);
end;

実行結果
[Delphi]Copy関数の実行サンプル(delphiで文字列を切り出しする記事/Copy関数の画像)

※重要な補足:Delphi7の頃のCopy関数では、日本語1文字を2バイトで扱っていたので、上記の結果とは異なります。

例えば日本語「がんばれ日本」で Copy(st, 1, 3) の時、通常のDelphiは「最初から3文字をコピー」するので「がんば」ですが、古いDelphiだと「最初から3バイトをコピー」するので、「が●」(●は文字化け)となる可能性があります。古いプログラムを移行する際のCopy関数は注意が必要です。

 

Copy関数のサンプル2

もしファイル名(flname)の先頭の3文字がABCなら・・・

if Copy(flname, 1, 3) = 'ABC' then

先頭1文字目(1)から3文字目(3)までが ABCなら真

真 ABC.txt, ABCxyz.txt

偽 BCD.txt, ZABC.txt

 

※下記はヘルプからの引用です

function Copy(S: string;
Index: Integer;
Count: Integer): string;

文字列または動的配列の一部を返します。

S は,文字列型または動的配列型の式です。Index と Count は整数型の式です。Copy 関数は,S[Index] から Count 個の文字または要素の入った部分文字列または部分配列を返します。

詳細なヘルプ

System.Copy – RAD Studio API Documentation (embarcadero.com)

 

Delphiメニューに戻る