我有这个字符串,我需要让一些字符变成大写字母所以我使用了UpCase命令...但是如果我需要从大写字母中创建小字符怎么办?在那种情况下我该用什么?
答案 0 :(得分:3)
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;
答案 1 :(得分:2)
您应该了解如何自行查找解决方案,而不是如何使用Google或stackoverflow:)
您在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;