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;
var
StrLst: TStringList;
begin
StrLst:= TStringList.Create;
try
//有多少个2
StrLst.Delimiter:= '2';
StrLst.DelimiterText := '123234565';
StrLst.Count - 1;//个数
finally
StrLst.Free;
end;
end;
delphi7是有Delimiter属性的,不过没有StrictDelimiter属性,会导致空格也被当成分割符。
像LSS那样,字符串中有空格的,设置StrictDelimiter为True才行,没有StrictDelimiter属性就是错的。
str := '123234565';
result := length(str) - length(stringreplace(str, '2', [rfreplaceall]));
delphi7是有Delimiter属性的,不过没有StrictDelimiter属性,会导致空格也被当成分割符。
像LSS那样,字符串中有空格的,设置StrictDelimiter为True才行,没有StrictDelimiter属性就是错的。
嗯,是这样,复制错了
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;