5

テキストボックスの文字の総数を確認し、その値をラベルに表示する必要がありますが、すべての空白を除外する必要があります。

コードは次のとおりです。

var     
sLength : string;
i : integer;
begin
     sLength := edtTheText.Text;
     slength:= ' ';
     i := length(sLength);

     //display the length of the string
     lblLength.Caption := 'The string is ' +  IntToStr(i)  + ' characters long';
4

2 に答える 2

11

次のように、空白以外の文字を数えることができます。

uses
  Character;

function NonWhiteSpaceCharacterCount(const str: string): Integer;
var
  c: Char;
begin
  Result := 0;
  for c in str do
    if not Character.IsWhiteSpace(c) then
      inc(Result);
end;

これはCharacter.IsWhiteSpace、文字が空白であるかどうかを判別するために使用されます。Unicode仕様に従って、文字が空白として分類されている場合にのみ、をIsWhiteSpace返します。Trueしたがって、タブ文字は空白としてカウントされます。

于 2012-09-17T15:46:17.353 に答える
0

DelphiのAnsiバージョンを使用している場合は、次のようなルックアップテーブルを使用することもできます。

NotBlanks: Array[0..255] Of Boolean

一致する文字が空白でない場合、配列内のブール値が設定されます。次に、ループでカウンターをインクリメントするだけです

Count := 0;
For i := 1 To Length(MyStringToParse) Do
  Inc(Count, Byte(NotBlanks[ Ord(MyStringToParse[i]])) );

同じ方法で、セットを使用できます。

For i := 1 To Length(MyStringToParse) Do
If Not (MyStringToParse[i] In [#1,#2{define the blanks in this enum}]) Then 
  Inc(Count).

実際、これを解決する方法はたくさんあります。

于 2012-09-17T20:39:58.033 に答える