function GetAlphaSubstr(const Str: string): string;
const
ALPHA_CHARS = ['a'..'z', 'A'..'Z'];
var
ActualLength: integer;
i: Integer;
begin
SetLength(result, length(Str));
ActualLength := 0;
for i := 1 to length(Str) do
if Str[i] in ALPHA_CHARS then
begin
inc(ActualLength);
result[ActualLength] := Str[i];
end;
SetLength(Result, ActualLength);
end;
function GetAlphaSubstr2(const Str: string): string;
var
ActualLength: integer;
i: Integer;
begin
SetLength(result, length(Str));
ActualLength := 0;
for i := 1 to length(Str) do
if Character.IsLetter(Str[i]) then
begin
inc(ActualLength);
result[ActualLength] := Str[i];
end;
SetLength(Result, ActualLength);
end;
4条答案
按热度按时间4urapxun1#
最简单的方法是
但这只会把英语字母当作“字母字符”,甚至不会把极其重要的瑞典文字母Å、ī、Ö当作“字母字符”!
稍微复杂一点的是
tjvv9vkg2#
尝试以下代码检查字符是否为字母字符。
要从一个字符串中删除所有非字母字符(英语字符),你可以使用如下代码。
现在,
NewStr
变量仅包含字母字符。在 Delphi 的较新版本中,您可以使用
Character.IsLetter
函数。6rqinv9w3#
我有一整套经过优化的字符串例程来做这些事情,它们可以在Unicode和非Unicode Delphi 中使用。
您可以下载它们here。
3gtaxfhh4#
完美解决方案:
在 Delphi XE中工作
http://regexpstudio.com