首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 中英文字符 怎的分段截取, 感觉有点难~

2013-02-25 
delphi 中英文字符 怎样分段截取, 感觉有点难~~str : abcd感谢csdn的大牛们,csdn牛牛祝大家新年快乐健康

delphi 中英文字符 怎样分段截取, 感觉有点难~~
str := 'abcd感谢csdn的大牛们,csdn牛牛祝大家新年快乐健康.'

就比如上面的字符串, 我已经搞了个函数拿到了字数(英文中文都视一个字),
但我现在要把上面的字符串每5个字分为一段一段的,  效果如果

1 := 'abcd感'; //每五个字分截取为一段.
2 := '谢csdn';
3 :=  '的大牛们,';
.....

有中文英文的应该怎么截取, 可不能用个lenght得字节啊, 这不准的,它是认为英文一个字节,中文两个字节这样的.~ 直接copy也不得,遇到中文会出现 截了字的一半.

拆为tstringlist吗  有没更好的办法或函数的..
[解决办法]
可以通过判断ascii码值不就行了吗0-127
[解决办法]

procedure TForm1.Button1Click(Sender: TObject);
var
  k, n: integer;
  ch: byte;
  s, sData: string;
begin
  sData := Edit1.Text;
  k := 1;
  s := '';
  n := 0;
  while k <= Length(sData) do
  begin
    ch := Byte(sData[k]);
    if Windows.IsDBCSLeadByte(ch) then
    begin
      s := s + Copy(sData, k, 2);
      Inc(k);
    end
    else
      s := s + sData[k];
    Inc(n);
    Inc(k);
    if n mod 5 = 0 then
    begin
      Memo1.Lines.Add(s);
      n := 0;
      s := '';
    end;
  end;
end;

[解决办法]
转成Unicode就不是问题了

热点排行