关于字符串的处理--高手指导一下 ( 积分: 50 )

  • 主题发起人 主题发起人 Davide214
  • 开始时间 开始时间
D

Davide214

Unregistered / Unconfirmed
GUEST, unregistred user!
function AddEnter(sValue:string;index:Integer):string;
输入一个字符串,中英文结合的,每隔index,插入一个回车符,怎么写呢,我写出来后总是会出现乱码
 
function AddEnter(sValue:string;index:Integer):string;
输入一个字符串,中英文结合的,每隔index,插入一个回车符,怎么写呢,我写出来后总是会出现乱码
 
随便写的,没有测试:
function TForm1.AddEnter(sValue: string
index: Integer): string;
var I: Integer;
begin
for I := 0 to Length(sValue) - 1 do
if I mod index = 0 then
Result := Copy(sValue, 0, index) + Chr(13) + Copy(sValue, index + 1, Length(sValue));
end;
 
简洁的不会
不过建议变换成WIDESTRING再处理
 
function AddEnter(sValue:string;index:Integer):string;
var
v_Count,i:Integer;
v_Value:WideString;
begin
v_Value := Trim(sValue);
v_Count:=Length(Trim(v_Value));
v_Count := v_Count div index;
for i:=1 to v_Count do
begin
Result:=Result+copy(v_Value,1,index)+#13+#10;
v_Value:=copy(v_Value,index+1,length(v_Value)-1);
end;
Result:=Trim(String(Result+v_Value));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := AddEnter('我爱delphi',1);
end;
 
to 樓主:
亂碼會不會是你把中文的一個字給砍兩半的結果阿
或者是你插入的時候處理字符串的時候多1或者少1阿
 
楼主,给你写了一个,测试通过,不会决断汉字:
function TForm1.AddEnter(sValue: string
index: Integer): widestring;
var
s:widestring;
n,i,z:integer;
begin
s:=widestring(sValue);
if index>1 then
begin
n:=trunc(length(s)/index);
z:=1;
for i:=1 to n do
begin
insert(#13,s,i*index+z);
z:=z+1;
end;
end;
result:=s;
end;
//调用
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Text:=AddEnter(edit1.Text,strtoint(edit2.Text));
end;
 
多人接受答案了。
 
后退
顶部