需要在Delphi中将大写字符改为小字符

时间:2015-04-17 09:33:39

标签: delphi delphi-7

我有这个字符串,我需要让一些字符变成大写字母所以我使用了UpCase命令...但是如果我需要从大写字母中创建小字符怎么办?在那种情况下我该用什么?

2 个答案:

答案 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帮助会告诉您DecInc的作用。

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;