如何在Delphi中将字符串中的一个字符转换为Char

7

我有一个字符串,需要从中提取一个字符用于Case语句。问题是Case只接受Char值而不是字符串值。那么如何将单个字符串字符转换为字符?

4个回答

12

将字符串视为字符数组(从1开始),并在case语句中使用要使用的字符的索引。例如,如果要使用第一个字符:

case MyString[1] Of
// ...
end;

注意,确保在使用下标之前检查字符串长度至少为该长度,否则将导致访问冲突。


1
举手之劳,如果你的个人代码库中有一个函数签名如下:function StrToChar(const S: string; Index: Integer = 1; Default: Char = ' '): Char; - afrazier
1
不错的编辑,我做C#和Delphi,总是在0和1基础上遇到心理障碍,每次切换时都要检查。 - Tony Hopkinson
1
最短的代码是这样的:c := Copy(s + ' ', 1, 1)[1]; - asdjfiasd

3

自从Delphi变成跨平台后,我会使用TStringHelper类中的0-based字符串访问方式,该类位于System.SysUtils单元中:

case MyString.Chars(0) Of
// ...
end;

3

自从在移动平台上使用0-based字符串后,现在也有一种总是安全的方法来获取单个字符的字符串。

myString[Low(myString)]

0
var

输入:字符串; 字母:字符;
字符:= 输入[1];

你的回答可以通过添加更多的支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到有关如何撰写好的回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接