And*_*and 15
最简单的方法是
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;
Run Code Online (Sandbox Code Playgroud)
但这只会将英文字母视为"字母字符".它甚至不会将极其重要的瑞典字母Å,Ä和Ö视为"字母字符"!
稍微复杂一点
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;
Run Code Online (Sandbox Code Playgroud)
尝试此代码以检查char是否是字母字符.
MyStr:='[-Bobby-]';
//is an alphabetical character ?
if MyStr[1] in ['a'..'z','A'..'Z'] then
Run Code Online (Sandbox Code Playgroud)
要从字符串中删除所有非字母字符(英文字符),您可以使用这样的字符.
NewStr:='';
for i := 1 to Length(MyStr) do
if MyStr[i] in ['a'..'z','A'..'Z'] then
NewStr:=NewStr+MyStr[i];
Run Code Online (Sandbox Code Playgroud)
现在NewStr变量只包含字母字符.
在较新版本的delphi中,您可以使用该Character.IsLetter功能.