这是我目前正在使用的代码:
procedure TForm1.Button1Click(Sender: TObject);
var a:string;
i:smallint;
begin
a:=Edit1.text;
for i:= 1 downto length(Edit1.Text) do
begin
Edit2.Text:= {last letter};
end;
我希望程序在Edit1.Text
中取出单词的最后一个字母并将其放在Edit2.Text
上。我能做什么?如果您需要,可以看到该程序的图片:
答案 0 :(得分:7)
您可以尝试使用StrUtils中包含的函数ReverseString();
。因此,首先在uses子句中添加StrUtils
。然后把这个代码代替for循环代码:
begin
a:=Edit1.text;
Edit2.Text:=ReverseString(a);
end;
它与你的相同,但这种方式更容易。另外,如果你想要字符串的长度,只需写下这段代码:
Edit3.Text:=IntToStr(length(your_edit.text));
当然,请输入正确的编辑名称,而不是your_edit
。
答案 1 :(得分:0)
该程序采用
中单词的最后一个字母Edit1.Text
那你的意思是说有几个字吗?那么你想要哪个词,或者你想逐个迭代所有的词?
或者你的意思是“整个字符串的最后一个字母”,无论是一个字还是多个字?
你真的需要所有字母翻转或只需要最后一个吗?
实际上,如果你只需要单个字母,那么效率最高的代码就是
if SourceString > '' then
DestString := SourceString[ Length( SourceString )]
else
... the source is empty... do something like showing error
或者使用SysUtils
中包含内置空字符串的函数:http://www.freepascal.org/docs-html/rtl/sysutils/rightstr.html
DestString := RightStr(SourceString, 1);
当你只需要一个字母的时候扭转整个字符串是一种矫枉过正的感觉,比如将一辆苹果卡车带回家只吃其中一个。