我的文本需要以"|"为分隔符进行处理,但是其中某字段含有很多连续的空格,比如:
|011021608|7|200510||046710100293|49栋1单元      ID:43|
用如下语句处理后,居然空格也被换为"|".
              t:=Tstringlist.create;
              t.Delimiter:='|';
              t.DelimitedText:=str;
              
这时t中所包含的是这样的字符串:|011025065001S11608|7|200510||046710100293|49栋1单元|ID:43|请问是怎么回事,如何解决

解决方案 »

  1.   

    TStringList类里对DelimitedText属性赋值时,根据TStringList类的定义,要调用SetDelimitedText私有方法。在这个方法的实现里,忽略多个空格,把它们当成一个空格。而这个方法对空格的处理和Delimiter是和一样的。没办法改了。
      

  2.   

    个人认为是TStrings的BUG,
    你看看VCL中
    procedure TStrings.SetDelimitedText(const Value: string);
    的代码就可以明白了!
      

  3.   

    自己先对原string做下处理,然后再分割吧
      

  4.   

    t:=Tstringlist.create;
    t.Text :=  StringReplace(str, '|', #13#10, [rfReplaceAll, rfIgnoreCase]);
      

  5.   

    不用那么复杂,试试Split0这个函数,引用XMLUtil