【发布时间】:2014-06-18 17:03:05
【问题描述】:
我正在尝试编写一个程序来显示用户名的前 3 个辅音和用户姓氏的后 3 个字母以及 ID 的每隔一个数字,并在第 7 位添加一个星号。我得到了正确的 ID 部分,但不是姓名和姓氏部分。
procedure TForm1.N31Click(Sender: TObject);
var
Name,Surname,ID,newname,newsurname,newID,newstring:string;
i,j,k:integer;
begin
newname:='';
newsurname:='';
newid := '';
name := UPPERCASE(inputbox('Name','First name',''));
Surname := inputbox('Surname','Last name','');
ID := Inputbox('ID','ID boy','');
for i := length(name) downto 1 do
begin
if name[i] in ['A','E','I','O','U'] then
delete(name,i,1);
newname := newname + name[i];
newname := copy(newname,1,3);
end;
begin
j := length(surname);
newsurname := copy(surname,j-2,3);
end;
for k := 1 to length(id) do
newid := newid + id[2*k];
newstring := (newname+newsurname+newID);
insert('*',newstring,7);
redoutput.Lines.Add(newstring) ;
任何帮助将不胜感激。
【问题讨论】:
-
不,我不是故意这样写的,你的方式看起来更复杂。
-
您在任务的哪一部分遇到了问题?你有没有费心使用调试器?你尝试过什么输入,得到了什么输出?你期望得到什么输出?
-
好吧@SirRufo 将我的代码更改为其他内容,因此我无法准确引用。我的名字部分有问题,我总是收到带有元音的字母。
-
@SirRufo 请将它改回我不喜欢这个的样子。
-
与其编写自己的代码来替换元音,不如考虑使用 StrUtils.StringReplace()。