1 posex循环
2 正则
3 删除或替换掉2,然后看短了多少
4 ...

解决方案 »

  1.   


    var 
      StrLst: TStringList;
    begin 
      StrLst:= TStringList.Create;
      try
        //有多少个2
       StrLst.Delimiter:= '2';
       StrLst.DelimiterText := '123234565';
       StrLst.Count - 1;//个数
      finally 
        StrLst.Free;   
      end;
    end;
      

  2.   

    就同LS这样最简单了,不过注意得d2007及以上版本才可以,低版本的 TStringList 没有 Delimiter 属性。
      

  3.   


    delphi7是有Delimiter属性的,不过没有StrictDelimiter属性,会导致空格也被当成分割符。
    像LSS那样,字符串中有空格的,设置StrictDelimiter为True才行,没有StrictDelimiter属性就是错的。
      

  4.   


    str := '123234565';
    result := length(str) - length(stringreplace(str, '2', [rfreplaceall]));
      

  5.   


    delphi7是有Delimiter属性的,不过没有StrictDelimiter属性,会导致空格也被当成分割符。
    像LSS那样,字符串中有空格的,设置StrictDelimiter为True才行,没有StrictDelimiter属性就是错的。
    嗯,是这样,复制错了
      

  6.   

    function CharCount(const S: string; Ch: Char): Integer;
    asm
            TEST    EAX,EAX
            JE      @@qt
            MOV     ECX,[EAX-4]
            TEST    ECX,ECX
            JE      @@zq
            PUSH    EBX
            LEA     EBX,[EAX-1]
            XOR     EAX,EAX
    @@lp:   CMP     DL,BYTE PTR [EBX+ECX]
            JE      @@fn
            DEC     ECX
            JNE     @@lp
            POP     EBX
            RET
    @@fn:   INC     EAX
            DEC     ECX
            JNE     @@lp
            POP     EBX
            RET
    @@zq:   XOR     EAX,EAX
    @@qt:
    end;