例えば、[sfQZ]と[sSZY]を比べて、
両方に、[s][Z]が含まれています。
この状態で、'2文字一致した'という結果を出したいんです。
この例で言うと[Z]のように、文字列の中の何番目にあるのかは関係無く、
両方に存在するかしないかの確認だけでいいんです。
またこの例の通り、4文字と4文字の文字列同士の確認のみです。
文字列の構成要素は、a〜z,A〜Zの52文字です。
一応考えたのは、a〜z,A〜Zを一文字ずつ、両方の文字列の一文字ずつ照らし合わせる方法と、
文字列を一文字ずつに分解して照らし合わせる方法なんですが、
いい方法ありませんか?
よろしくお願いします。
function HowManyMatch(s1,s2:string):integer;
var
i:integer;
begin
result := 0;
for i := 1 to 4 do
if StrScan(PChar(s1),s2[i]) <> nil then Inc(result);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Caption := IntToStr(HowManyMatch('sfQZ','sSZY'));
end;
出来ました。
ありがとうございました。
ツイート | ![]() |