怎么比较一个字符串中包含了另一个字符串,并能知道是第几位开始有这个字符串的。比如:
有一个“A0101”,另一个是“A01”,“A0101”中有“A01”,有没有一个函数能比较出来?

解决方案 »

  1.   

    Strpos??StrPos 
    函数说明 在Strl所指定的字符串中寻找Str2所指定的子字符串,并返回Str2在Str2中第一个子字符的指针
     
      

  2.   

    首部  function AnsiContainsText(const AText, ASubText: string): Boolean; $[StrUtils.pas
    功能  返回字符串AText是否包含子串ASubText
    说明  不区分大小写
    参考  function StrUtils.AnsiUppercase; function StrUtils.AnsiPos
    例子  CheckBox1.Checked := AnsiContainsText(Edit1.Text, Edit2.Text);
    -----------------------------------------------------------------------------------------
    首部  function AnsiIndexText(const AText: string; const AValues: array of string): Integer; $[StrUtils.pas
    功能  返回字符串AText在字符串数组AValues中的位置
    说明  不区分大小写;如果不包含则返回-1
    参考  function SysUtils.AnsiSameText
    例子  SpinEdit1.Value := AnsiIndexText(Edit1.Text, ['a1', 'a2', 'a3', 'a4']);
    -----------------------------------------------------------------------------------------
    首部  function AnsiContainsStr(const AText, ASubText: string): Boolean; $[StrUtils.pas
    功能  返回字符串AText是否包含子串ASubText
    说明  区分大小写
    参考  function StrUtils.AnsiPos
    例子  CheckBox1.Checked := AnsiContainsStr(Edit1.Text, Edit2.Text);
    -----------------------------------------------------------------------------------------
    首部  function AnsiReplaceStr(const AText, AFromText, AToText: string): string; $[StrUtils.pas
    功能  返回字符串AText中用子串AFromText替换成子串AToText的结果
    说明  区分大小写
    参考  function SysUtils.StringReplace; type SysUtils.TReplaceFlags
    例子  Edit4.Text := AnsiReplaceStr(Edit1.Text, Edit2.Text, Edit3.Text);
    -----------------------------------------------------------------------------------------
    你可以用AnsiContainsText判断是否包含子串,若是,用AnsiReplaceStr函数用几个特殊字符替换子串(如用*号),然后再判断'*'的位置即可.
      

  3.   

    脑袋灵活一点
    string1:='A0101';
    string2:='A01'
    stringn:=....
    将每个string后面加上一个基本上不会出现的字符,比如*,或^等,
    string1:='A0101*'
    string2:='A01*'
    这样strpos时就不会出现你所说的问题了
    查找到了后去掉最后的*就行了
      

  4.   

    将两个字符串放到strpos中进行比较报错咧?不会用呀