我有这个字符串,我需要将一些字符大写,所以我使用该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或stackoverflow:)
您在 System.pas 中拥有 UpCase 函数的源代码。看看它是如何工作的。所做的只是从小写字符中减去 32。如果你想要相反的,加 32 而不是减去它。德尔福的帮助会告诉你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;