Count the words in a text string.

vegaseat 0 Tallied Votes 2K Views Share

A function that takes a string and returns the number of words in the string. An example of using pointers in Pascal.

// count words in a string using pointers
// Pascal code used in a Delphi 3.0 program

function WordsCount(s: string ): integer;
var
  ps: PChar;
  nSpaces, n: integer;
begin
  n := 0;
  // make it a string that ends with value zero
  s := s + #0;
  // point to start of string s
  ps := @s[ 1 ];
  // keep loop going up to zero ending
  while( #0 <> ps^ ) do
  begin
    // checks for space = ' '
    while((' ' = ps^) and (#0 <> ps^)) do
    begin
      inc( ps );
    end;
    nSpaces := 0;
    while((' ' <> ps^) and (#0 <> ps^)) do
    begin
      inc(nSpaces);
      inc(ps);
    end;
    if (nSpaces > 0) then
    begin
      inc( n );
    end;
  end;
  Result := n;
end;
andrewgalpin 0 Newbie Poster

Or you could use this function:

function WordCount (s: string): integer;

var
i, count : integer;
letter : string;
begin
   count := 1;
for I := 1 to length(s) do
 begin
   letter := s[i];

   if letter = ' ' then count := count +1;
   end;
   result := count;
end;
BitFarmer 0 Junior Poster in Training

andrewgalpin: your code count SPACES, not words... try it out with this text "hello bye", you won't get a 2, instead you will get the spaces between words... is NOT the same, and if you try to detect "first space" from "subsecuent spaces", then you end up with the original code, but several times slower if don't use pointewrs.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.