统计一个用'|'作分隔符的字符串字段个数时, 发现一个问题,求教
我有这样一个字符串, '张弢|120000|23|杭州'  通过pos 查找'|' 处理字符串获取字段个数, 此例应为4个字段,  但由于'弢'的代码是 8F7C  而 '|'的ascII是 7C ,因此这个字符串统计出来的个数是 5 , 请问有何办法解决, 我只要实现获取正确字段个数的方法, 不一定要基于pos 

解决方案 »

  1.   

    判断'|'前一个字节的ASCII码是不是大于160,是的话则为汉字的后半个
      

  2.   

    使用WideString,中文当一个字符,英文、数字也是一个字符
    例子:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      str1: String;
      str2: WideString;
    begin
      str1:='张弢|120000|23|杭州';
      str2:='张弢|120000|23|杭州';
      Caption:=IntToStr(pos('|',str1))+':'+IntToStr(pos('|',str2))+copy(str2,1,2)
    end;
      

  3.   

    pos函数的确存在这么一个问题
      

  4.   

    POS: function Pos(Substr: string;S: string): Integer;返回在源字符串(S)中的第一个字串(Substr)的第一个字符位置。如果没找到子串则返回0,POS对大小写是敏感的。中文的汉字在DELPHI里面被看作是2个字符,所以要POS到正确的字符的话要定义成WideString