testStr:='D:\ProgramFiles\测试.txt';
temp:='测试.txt';
在delphi中如何判断testStr中是否存在子字符串temp?
各位谁有比较完善的中文字符串查找或者截取代码,拿出来分享一下,谢谢。

解决方案 »

  1.   


    我测试了下,没问题。不过Pos不分字符或字符串吗?
      

  2.   

    还真的可以哦,学习了var
      a:string;
      b:string;
      i:integer;begin
      a := '测试';
      b := '测试字符串';
      i := Pos(a,b);
      if i>0 then
        showmessage('fdasfdas');
    end;
    、、这是我的测试程序,
    没有想到中文 也行唉。。
      

  3.   

    用Pos函数在含有中文的字符串中寻找子串还是可能会出现问题的, 比如下面这样:ShowMessage(IntToStr(Pos('馐', '测试')));显示的结果是2, 不是0
      

  4.   

    出现类似错误判断的例子还会有很多, 比如这样:if Pos('址', '测试字符串') > 0 then ShowMessage('!!!!!!');
      

  5.   


    a: widestring;
    b: widestring;if Pos(a, b) > 0 then ShowMessage('!!!!!!');这个还出现问题么?
      

  6.   

    我不是说了:
    var
      a,b: WideString;
    begin
      a :='址';
      b := '测试字符串';
      if Pos(a,b ) > 0 then ShowMessage('!!!!!!');
    end;
      

  7.   

    9楼是正确的!
    因为Pos的两个参数是字符型的,而字符型数据有两大类(不考虑PChar等类型),一类是标准ASCII的String类型,一类是双字节的WideString类型,
    当两个参数是String类型的时候,它是根据字节进行比较,所以有可能发生待搜索字符串(包括字符)正好是从一个字符的中间字节开始能够匹配的情况,这种情况不能算是Pos函数判断错误,而应该属于使用错误。
    当两个参数是WideString类型的时候,它不会将两个字节的中文从中间截断进行匹配的情况,所以这种情况下是正确的。