Delphiで文字列を扱う方法のいくつかを紹介します。
AnsiLeftStr
文字列の先頭から指定文字数分を取得する時に使えます。
文字列の先頭からn文字を取得する
St: String;
St:= ‘abcdefg’;
St:= AnsiLeftStr(St,4);
//Stにはabcdが入る。
uses節
usesには、System.StrUtilsを追加します。
AnsiReplaceStr
文字列の一部を置き換える時に使えます。
大文字と小文字を区別しながら検索して、文字列内に出現する指定の部分文字列をすべて指定の文字列に置き換えます。
特定文字の置換(消去)
St: String;
St:= ‘400円’;
St:= AnsiReplaceStr(St, ‘ 円’, ”); //’ 円’を ”(文字なし)に置換
//Stには400が入る。
//AnsiReplaceStrは関数として置換後の文字列を返す。
uses節
usesには、System.StrUtilsを追加します。
Delete、Insert
Deleteは、n文字目からm文字を削除、Insertは、n文字目に文字を挿入。
n文字目からm文字を削除
St: String;
St:= ‘400円’;
Delete(St,4,1);
//四文字目から一文字削除され、Stには400が残る。
n文字目にタブ(#9)を挿入
Insert(#9,St,2);
//Stの二文字目にタブを挿入。タブ(Tab)は#9で表す。
実例紹介
楽天カードの利用のお知らせメールをスプシに貼り付ける際の文字の整形
特定フォーマットから別の特定フォーマットに整形するプログラム
procedure TForm1.Button1Click(Sender: TObject);
var
i,n,m,num, min: Integer;
St: String;
SL: TStringList;
begin
num:=-1;
min:=0;
for I := Memo1.Lines.Count-1 downto 0 do
begin
St:= Memo1.Lines[i];
//AnsiLeftStr uses System.StrUtils
St:= AnsiLeftStr(St,4); //先頭4文字の取得
if St = '支払方法' then
begin
Memo1.lines.delete(i);
Memo1.lines.delete(i);
Memo1.lines.delete(i);
St:= Memo1.Lines[i-1];
n:= AnsiPos(#9, St) ; //タブ(#9)の位置を取得
Delete(St,n,1); //n文字目の1文字を削除
m:= AnsiPos(#9, St) ;
Insert(#9,St,m); //m文字目にタブ(#9)を挿入
Insert(#9,St,m);
Insert(#9,St,n);
//AnsiReplaceStr uses System.StrUtils
Memo1.Lines[i-1]:=AnsiReplaceStr(St, ' 円', ''); //' 円'を ''に置換
num:= num+1;
min:= i-1
end;
end;
SL:= TStringList.Create;
for I := 0 to num do
begin
SL.Add(Memo1.Lines[min+I]);
end;
Clipboard.AsText := SL.Text; //結果をクリップボードにコピー
SL.Free;
end;
整形前の文字列(メールの内容)
ご利用日 ご利用先 ご利用金額
2024/06/01 GOOGLE PLAY JAPAN 480 円
支払方法:1回 | 支払月:2024/07 | 利用者:本人
2024/06/01 GOOGLE PLAY JAPAN 1,000 円
支払方法:1回 | 支払月:2024/07 | 利用者:本人
2024/06/01 GOOGLE PLAY JAPAN 1,000 円
支払方法:1回 | 支払月:2024/07 | 利用者:本人
2024/06/01 GOOGLE PLAY JAPAN 160 円
支払方法:1回 | 支払月:2024/07 | 利用者:本人
2024/06/01 GOOGLE PLAY JAPAN 480 円
支払方法:1回 | 支払月:2024/07 | 利用者:本人
合計 3,120 円
スプシ貼付結果
ソシャゲの課金はホドホドに・・・