需要在 Delphi 中将大写字符更改为小写字符
Need to change capital character to a small one in Delphi
我有这个字符串,我需要将一些字符设为大写,所以我使用 UpCase
命令...但是如果我需要将大写字符设为小字符怎么办?那我该用什么?
UpCase
不识别区域设置,只能处理英语的 26 个字母。如果这真的是您所需要的,那么您可以创建等效的 LoCase
函数,如下所示:
function LoCase(ch: AnsiChar): AnsiChar; overload;
begin
case ch of
'A'..'Z':
Result := AnsiChar(Ord(ch) + Ord('a')-Ord('A'));
else
Result := ch;
end;
end;
function LoCase(ch: WideChar): WideChar; overload;
begin
case ch of
'A'..'Z':
Result := WideChar(Ord(ch) + Ord('a')-Ord('A'));
else
Result := ch;
end;
end;
您应该学习如何自己找到解决方案,而不是如何使用 Google 或 Whosebug :)
您在 System.pas 中有 UpCase 函数的源代码。看看它是如何工作的。所有这一切都是从小写字符中减去 32。如果您想要相反的结果,请加 32 而不是减去它。 Delphi 帮助会告诉您 Dec
或 Inc
的作用。
var
S: string;
I: Integer;
begin
S := 'ABCd';
for I := 1 to Length(S) do
if S[I] in ['A'..'Z'] then // if you know that input is upper case, you could skip this line
Inc(S[I], 32); // this line converts to lower case
end;
我有这个字符串,我需要将一些字符设为大写,所以我使用 UpCase
命令...但是如果我需要将大写字符设为小字符怎么办?那我该用什么?
UpCase
不识别区域设置,只能处理英语的 26 个字母。如果这真的是您所需要的,那么您可以创建等效的 LoCase
函数,如下所示:
function LoCase(ch: AnsiChar): AnsiChar; overload;
begin
case ch of
'A'..'Z':
Result := AnsiChar(Ord(ch) + Ord('a')-Ord('A'));
else
Result := ch;
end;
end;
function LoCase(ch: WideChar): WideChar; overload;
begin
case ch of
'A'..'Z':
Result := WideChar(Ord(ch) + Ord('a')-Ord('A'));
else
Result := ch;
end;
end;
您应该学习如何自己找到解决方案,而不是如何使用 Google 或 Whosebug :)
您在 System.pas 中有 UpCase 函数的源代码。看看它是如何工作的。所有这一切都是从小写字符中减去 32。如果您想要相反的结果,请加 32 而不是减去它。 Delphi 帮助会告诉您 Dec
或 Inc
的作用。
var
S: string;
I: Integer;
begin
S := 'ABCd';
for I := 1 to Length(S) do
if S[I] in ['A'..'Z'] then // if you know that input is upper case, you could skip this line
Inc(S[I], 32); // this line converts to lower case
end;