我正在尝试编写一个程序来计算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/