« ■2008 Delphi Survey | トップページ | ☆TShellResourcesって? »

☆文字列を後方から検索する。

次のような規則に従って作られたファイル名から部分文字列(金額)を取り出す処理です。
[半角空白]名称[-]金額.txt

ここで問題だったのは、名称と金額を繋いでいる-(hyphen)が名称にも含まれている場合があるため、 後方から-(hyphen)の位置を検索しなくてはいけないことでした。
そこで今回はAnsiReverseString関数を使って処理してみました。
uses StrUtils;

procedure TForm1.Button1Click(Sender: TObject);
const
  S = '2008 Delphi-fan-123,456,789円.txt';
  Delimiter = '-';
var
  WS, RS: WideString;
  Len, I: Integer;
begin
  // 拡張子を削除する。
  WS := ChangeFileExt(S,'');
  // 後方から検索したいので、文字列をリバースさせてPos関数が使えるようにする。
  RS := AnsiReverseString(WS);
  Len := Length(WS);
  I := Len-Pos(Delimiter, RS)+1;
  Edit1.Text := Copy(WS, I+1, Len-I);
end;
この処理できちんと123,456,789円が取得できました。

|

« ■2008 Delphi Survey | トップページ | ☆TShellResourcesって? »