gpt4 book ai didi

delphi - 如何查找和统计文本字符串中的单词?

转载 作者:行者123 更新时间:2023-12-03 15:47:47 24 4
gpt4 key购买 nike

用户需要输入一个句子,其中代码应显示单词“in”在句子中出现的次数。它应该只计算单词“in”,而不计算包含“in”的单词。

问题:我的代码只计算单词“in”出现一次,即使它出现多次。

注意:*我们还没有开始使用数组。 *此代码是delphi代码,请不要将其识别为涉及其他编程语言的问题的重复。*这是作业,但不应该交,只有我会看到它(我参加在线类(class))。

我尝试过的:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
redOut: TRichEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var sentence : string;
WordCount : integer;
begin
WordCount := 0;
sentence := Inputbox ('Sentence input', 'Input a sentence (The word "in" will be counted','');
if Pos('in',sentence) > 0 then

WordCount := WordCount + 1;

RedOut.Lines.Add('The number of times "in" appears in the sentence is ' + inttostr(WordCount) + ' time(s)');


end;

end.

最佳答案

计算一个字符串在另一个字符串中出现的次数的一种方法如下所示。稍微棘手的事情是当“in”是另一个字符串的子字符串时避免计数。嵌套的 NextWord 函数负责处理这个问题。

我并不是说这是最有效的方法,但它确实说明了有关使用 Object Pascal 进行字符串操作的几点。

如果它的工作原理不明显,请在调试器下跟踪它。

顺便说一句,如果您“还没有完成数组”,我相信您将能够抵制任何诱惑,将其作为作业提交,以防万一您被要求解释它:=)

顺便说一句,代码是 D7 的,我注意到这里有很多学生在使用。如果您使用的是 D2009 或更高版本,则应通过调用 CharInSet 替换 ['a'..'z', 'A'..'Z'] 中的 CH您可能需要在在线帮助中查找。



function WordCount(Target, Input : String; IgnoreCase : Boolean) : Integer;
var
SP : Integer;
TempStr : String;

function IsLetter(CH : Char) : Boolean;
begin
Result := CH in ['a'..'z', 'A'..'Z'];
end;

function NextWord : String;
begin
Result := '';
while (SP <= Length(Input)) and not (IsLetter(Input[SP])) do
Inc(SP);

while (SP <= Length(Input)) and IsLetter(Input[SP]) do begin
Result := Result + Input[SP];
Inc(SP);
end;
end;

begin
Result := 0;
if IgnoreCase then begin
Target := LowerCase(Target);
Input := LowerCase(Input);
end;

SP := 1;
repeat
TempStr := NextWord;
if TempStr = Target then
inc(Result);
until TempStr = '';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Target : String;
Input : String;
begin
Target := 'In';
Input := 'in outing in ';
ShowMessageFmt('%s contains %d occurrences of %s', [Input, WordCount(Target, Input, True), Target]);

Input := 'a';
ShowMessageFmt('%s contains %d occurrences of %s', [Input, WordCount(Target, Input, True), Target]);
end;

关于delphi - 如何查找和统计文本字符串中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35540597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com