如何在delphi上复制段落中的所有单词并添加每个单词
使用Delphi 7,如果我有下面左边窗口中显示的一些文本,我如何提取段落中的所有单词和标点符号,并将它们复制到另一个窗口中,如右边的窗口,后面跟着一个#如何在delphi上复制段落中的所有单词并添加每个单词,delphi,delphi-xe2,delphi-7,delphi-xe5,Delphi,Delphi Xe2,Delphi 7,Delphi Xe5,使用Delphi 7,如果我有下面左边窗口中显示的一些文本,我如何提取段落中的所有单词和标点符号,并将它们复制到另一个窗口中,如右边的窗口,后面跟着一个# 如果我理解正确,您需要所谓的“标记器”或“lexer” D7在类单元中有一个内置的,误导性地称为TParser(误导性地说,因为解析通常意味着“语法分析”步骤,这可能是文本标记化之后的步骤,就像编译器操作中的f.i.一样) 不管怎么说,iirc,Delphi的TParser旨在处理DFM文件的文本,因此不一定会按照您的需要将文本拆分,但这只是
如果我理解正确,您需要所谓的“标记器”或“lexer” D7在类单元中有一个内置的,误导性地称为TParser(误导性地说,因为解析通常意味着“语法分析”步骤,这可能是文本标记化之后的步骤,就像编译器操作中的f.i.一样) 不管怎么说,iirc,Delphi的TParser旨在处理DFM文件的文本,因此不一定会按照您的需要将文本拆分,但这只是一个开始。例如,当它标记“:=”时,它将返回“:”和“=”作为两个单独的标记,但是,当NextToken/TokenString连续返回这些标记时,您当然可以将它们重新连接起来。顺便说一句,有几种替代方法可以使用免费软件Jedi JCL和JVCL库中的类来实现tokeniser 如果q左侧的文本窗口位于您自己的应用程序中,请编写如下代码 你可以做你想做的事:
procedure TForm1.Tokenise;
var
SS : TStringStream;
TokenText : String;
Parser : TParser;
begin
SS := TStringStream.Create(Memo1.Lines.Text);
Parser := TParser.Create(SS);
try
while Parser.Token <> #0 do begin
TokenText := Parser.TokenString;
Memo2.Lines.Add(TokenText + '#');
Parser.NextToken;
end;
finally
Parser.Free;
SS.Free;
end;
end;
程序TForm1.Tokenise;
变量
SS:TStringStream;
TokenText:字符串;
解析器:TParser;
开始
SS:=TStringStream.Create(Memo1.Lines.Text);
解析器:=TParser.Create(SS);
尝试
当Parser.Token#0开始时
TokenText:=Parser.TokenString;
备忘录2.行。添加(TokenText+'#');
Parser.NextToken;
结束;
最后
解析器。免费;
SS.免费;
结束;
结束;
如果文本窗口在另一个应用程序中,您当然也需要一种从中检索文本的方法。您正在努力完成这项任务的哪一部分?什么版本的Delphi?您的标签令人困惑。如果有帮助,请学习delphi 7或delphi xe5Glad。如果是的话,请点击左边的“勾选”图标来“接受”答案……我很好奇为什么会投反对票?不管怎样,我是最重要的。谢谢@Jerrydoge。也许有人会告诉我们。也许-1是出于对OP后来的q的不满,现在被删除了。