高分求算法。急!急!(200分)

F

fjxujin

Unregistered / Unconfirmed
GUEST, unregistred user!
将一字符串按某一固定长度截取成几段,要求不出现乱码。
1/字符串包含字符、数字和汉字
2/如果截取的位置是汉字,将截取的位置上移一位.
例:
字符串 :ASFD安定12adffg
截取长度: 5
结果:
ASFD
安定1
2adff
g


 
汉字的asc码大于128吧,可以根据这个判断
 
此方法不可取,我已经试过,“统”>200
 
应该是一个字节一个字节的取,再判断它是否大于128
如果大于128就再取一个字节
 
能否提供一份源代码,运行通过马上给分。
 
// 原字符串 目标字符串组 每段目标字符串长度
procedure CutStr(const S:String
Strs:TStrings
CutLen:Integer);
var
i,SLen,SP,CP:Integer;
procedure AddStr;
begin
Strs.Add(Copy(s,SP,i-SP+1));
CP:=0;
SP:=i+1;
end;
begin
i:=1
SLen:=Length(s)
SP:=1
CP:=-1;
while i<=SLen do begin
if S>#$80 //是汉字
then begin if CP=0 then CP:=i end
else CP:=0;
if (i-SP=CutLen-1) then begin
if CP=0
then AddStr
else if (i-CP) mod 2 =1
then AddStr
else begin
dec(i);
AddStr;
end;
end;
Inc(i);
end;
if SP<SLen then Strs.Add(Copy(s,SP,SLen-SP+1));
end;

使用方法举例:
Memo1.Clear;
CutStr(Edit1.Text,Memo1.Text,5);

不好意思,练练手。
 
接受答案了.
 

Similar threads

回复
0
查看
666
不得闲
回复
0
查看
855
不得闲
D
回复
0
查看
823
DelphiTeacher的专栏
D
D
回复
0
查看
629
DelphiTeacher的专栏
D
S
回复
0
查看
950
SUNSTONE的Delphi笔记
S
顶部