こんばんは。
以下の環境でプログラム作成しています初心者です。
指定した文字列('-')が対象文字列('AAA-BBB-CCC-DDD-EEE')の中にいくつ存在するか(答え:4つ)わかる
関数はありますか?
アドバイスを頂けましたらとっても助かります。
よろしくお願いいたします。
Delphi Tokyo Enter 64bit
Windows 10 PRO
直接的にそのような動作をするものはないですね。
案1: Pos http://docwiki.embarcadero.com/Libraries/Tokyo/ja/System.Pos で文字列末尾までスキャンする
procedure TForm1.Button1Click(Sender: TObject);
var
Source: String;
Sub: String;
I: Integer;
Count: Integer;
begin
Source := 'AAAA-BBBB-CCCC-DDDD-EEEE';
Sub := '-';
Count := 0;
I := 1;
while True do
begin
I := Pos(Sub,Source,I);
if I = 0 then
begin
Break;
end;
Count := Count + 1;
I := I + Length(Sub);
end;
Label1.Caption := IntToStr(Count);
end;
案2: 正規表現ライブラリ http://docwiki.embarcadero.com/Libraries/Tokyo/ja/System.RegularExpressions.TRegEx を使う
uses
System.RegularExpressions;
procedure TForm1.Button2Click(Sender: TObject);
var
Source: String;
Sub: String;
Count: Integer;
begin
Source := 'AAAA-BBBB-CCCC-DDDD-EEEE';
Sub := '-';
Count := TRegEx.Matches(Source,Sub).Count;
Label1.Caption := IntToStr(Count);
end;
HFUKUSHIさん 毎々のご回答ありがとうございます。
案1と案2、二つとも試させていただきました。
どちらにしようか迷いましたが
案1を使うことにしました。
助かりました。
今後ともよろしくお願いいたします。
ツイート | ![]() |