Nic*_*ges 13
简单但有效.可以优化,但应该为您提供您需要的开始:
function RemoveNumbers(const aString: string): string;
var
C: Char;
begin
Result := '';
for C in aString do begin
if not CharInSet(C, ['0'..'9']) then
begin
Result := Result + C;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud)
相当快速的inplace版本.
procedure RemoveDigits(var s: string);
var
i, j: Integer;
pc: PChar;
begin
j := 0;
pc := PChar(@s[1]);
for i := 0 to Length(s) - 1 do
if pc[i] in ['0'..'9'] then
//if CharInSet(pc[i], ['0'..'9']) for Unicode version
Inc(j)
else
pc[i - j] := pc[i];
SetLength(s, Length(s) - j);
end;
Run Code Online (Sandbox Code Playgroud)
这与Nick的版本具有相同的输出,但这是短字符串的3倍以上.文本越长,差异越大.
function RemoveNumbers2(const aString: string): string;
var
C:Char; Index:Integer;
begin
Result := '';
SetLength(Result, Length(aString));
Index := 1;
for C in aString do
if not CharInSet(C, ['0' .. '9']) then
begin
Result[Index] := C;
Inc(Index);
end;
SetLength(Result, Index-1);
end;
Run Code Online (Sandbox Code Playgroud)
如果您不必浪费宝贵的CPU周期,请不要浪费.