我正在尝试编写一个程序来计算Pascal文本文件中的所有单词。我希望它能处理多个空格字符,但是我不知道该怎么做。

我尝试添加布尔函数Space来确定字符是否为空格,然后执行

while not eof(file) do
begin
  read(file,char);
  words:=words+1;
  if Space(char) then
    while Space(char) do
      words:=words;


但这是行不通的,并且基本上只是总结了我关于程序外观的想法(可能很糟糕)。有任何想法吗?

最佳答案

基本上,正如Tom在其答案中概述的那样,您需要一台状态机,其状态为In_A_Word和Not_In_A_Word,然后在状态从Not_In_A_Word更改为In_A_Word时进行计数。

类似于(伪代码)的东西:

var
  InWord: Boolean;
  Ch: Char;
begin
  InWord := False;
  while not eof(file) do begin
    read(file, Ch);
    if Ch in ['A'..'Z', 'a'..'z'] then begin
      if not InWord then begin
        InWord := True;
        Words := Words + 1;
      end;
    end else
      InWord := False
  end;
end;

关于delphi - 如何计算带有多个空格字符的文本文件中的所有单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56877404/

10-13 08:18