有一个大字符串,要将它拆分出,如何防止截起到半个汉字, pb中如何实现,我已被此折磨了1天了......

解决方案 »

  1.   

    试试比较字符的 ASCII 码,汉字应该是两个字节,ASCII 码大于 128,防止出现连续的汉字字节为奇数时的拆分。
    PB 中没有处理 Unicode 字符串的东西吗?用它应该可以。
      

  2.   

    你可以借助TMemo实现,先把数据放到Memo中,由Memo自动折行,然后再一行一行的取回,delphi中可以这样,不知Pb中可何
      

  3.   

    用li_id 标识是否未汉字的前半个字符li_id = 1
    //我查过很多资料,汉字理论上是从128开始,但国标码实际是从A0开始
    if asc(ls_char) >= 160  and  li_id = 1 then
    //回退一个字符
       ll_c = ll_c - 1
       li_id = 0
    end if
    Just a example ,自己研究吧
      

  4.   

    你把它转成unicode拆分,完了再转回来不就行了。
      

  5.   

    用ByteType(String,index)。如果返回是mbSingleByte那就是可以截断的,反之
    就是不能阶段的啦
      

  6.   

    在PB中可以利用char(ch)>128表示汉字来划分呀.
      

  7.   

    此問題我在報表自定義控制中使用如下方式:
    先定義一過程:
    function IsHz(Source: string): Bool;
    begin
         result := ((Word(Source[1]) shl 8 + Word(Source[2])) >= $B0A1)
               and    ((Word(Source[1]) shl 8 + Word(Source[2])) <= $D7F9)
    end;
    實際運用中判斷:
    var Text,s:string;s:=copy(Text,11,1);
    if (Trim(S)<>'') and IsHz(s) or (Ord(s[1]) >=128) 
        and (copy(v,6,1)<>'(')  then
    begin
      .........
    end;你在實際運用中再根據你的需求改一下
      

  8.   

    请参考
    http://asp3.6to23.com/dever/delphi/op/op003.asp更多信息:欢迎访问我的个人技术站点 
    http://dever.6to23.com