デルファイの文字列内の特定の文字の出現回数をどのように数えることができますか?例えば文字列内の特定の文字の出現回数をカウントするには?
、私は次の文字列を持っており、それにカンマの数をカウントしたいことを想定しています
S := '1,2,3';
その後、私は結果として2
を取得したいと思います。
デルファイの文字列内の特定の文字の出現回数をどのように数えることができますか?例えば文字列内の特定の文字の出現回数をカウントするには?
、私は次の文字列を持っており、それにカンマの数をカウントしたいことを想定しています
S := '1,2,3';
その後、私は結果として2
を取得したいと思います。
あなたはこの単純な関数を使用することができます。
:function OccurrencesOfChar(const S: string; const C: char): integer;
var
i: Integer;
begin
result := 0;
for i := 1 to Length(S) do
if S[i] = C then
inc(result);
end;
私はそれを行うことはできません単線? –
@NareshKumar:はい、もちろんです: 'OccurrencesOfChar(myString、 '、')' –
+1ですが、chrは既に意味があるので貧しい名前です。私はC –
そして(アンドレアス、単に代替ソリューションによって受け入れソリューションよりもない任意のより良い)現代のDelphiのバージョンで列挙ループを好む人のため
function OccurrencesOfChar(const ContentString: string;
const CharToCount: char): integer;
var
C: Char;
begin
result := 0;
for C in ContentString do
if C = CharToCount then
Inc(result);
end;
この1つはあなたが大規模なテキスト
を処理していない場合のための作業を行うことができます...
uses RegularExpressions;
...
答えはすでに承認されているにもかかわらずfunction CountChar(const s: string; const c: char): integer;
begin
Result:= TRegEx.Matches(s, c).Count
end;
なぜそれはDelphiでうまくいかないでしょうか?正規表現は、大規模なテキスト本体を扱う際には非常に優れています。 –
私はそれがとてもエレガント見つけるので、私は以下より一般的な機能を掲示しています。この解決策は、文字ではなく文字列の出現を数えるためのものです。
{ Returns a count of the number of occurences of SubText in Text }
function CountOccurences(const SubText: string;
const Text: string): Integer;
begin
Result := Pos(SubText, Text);
if Result > 0 then
Result := (Length(Text) - Length(StringReplace(Text, SubText, '', [rfReplaceAll]))) div Length(subtext);
end; { CountOccurences }
君はStringReplace機能の利点を使用することができます。
function OccurencesOfChar(ContentString:string; CharToCount:char):integer;
begin
Result:= Length(ContentString)-Length(StringReplace(ContentString, CharToCount,'', [rfReplaceAll, rfIgnoreCase]));
end;
http://delphi.cjcsoft.net//viewthread.php?tid=43892 – Ampere