这取决于“字母数字字符”和“标点符号”的定义。
例如,如果我们定义一组标点符号
const
PUNCT = ['.', ',', ':', ';', '-', '!', '?'];
并考虑所有其他字符字母数字,那么你可以做
function RemovePunctuation(const Str: string): string;
var
ActualLength: integer;
i: Integer;
const
PUNCT = ['.', ',', ':', ';', '-', '!', '?'];
begin
SetLength(result, length(Str));
ActualLength := 0;
for i := 1 to length(Str) do
if not (Str[i] in PUNCT) then
begin
inc(ActualLength);
result[ActualLength] := Str[i];
end;
SetLength(result, ActualLength);
end;
此函数将字符串转换为字符串。如果您想将字符串转换为字符数组,只需执行
type
CharArray = array of char;
function RemovePunctuation(const Str: string): CharArray;
var
ActualLength: integer;
i: Integer;
const
PUNCT = ['.', ',', ':', ';', '-', '!', '?'];
begin
SetLength(result, length(Str));
ActualLength := 0;
for i := 1 to length(Str) do
if not (Str[i] in PUNCT) then
begin
result[ActualLength] := Str[i];
inc(ActualLength);
end;
SetLength(result, ActualLength);
end;
(是的,在 Delphi 中,字符串使用基于 1 的索引,而数组使用基于 0 的索引。这是出于历史原因。)