我已经搜索了很多内容,现在想在Delphi/Lazarus中实现这个功能:给定一个位置,在另一个字符串中找到该位置的字符。我知道如何找到一个字符的位置,但我需要相反的功能:给定一个位置找到其对应的字符。非常感谢。
在Delphi中,可以使用数组表示法来索引字符串中的字符。只需注意字符串中的第一个字符的索引为1。
var
s: string;
c: char;
begin
s := 'Hello';
c := s[1]; //H
end;
字符串可以像数组一样访问。
MyString[12]会给你字符串中第12个字符。 注意:这是1索引(因为0位置用来保存字符串的长度)
示例:
var
MyString : String;
MyChar : Char;
begin
MyString := 'This is a test';
MyChar := MyString[4]; //MyChar is 's'
end;
这个问题是在2012年最后一次回答的,现在我来更新一下:
对于最新版本的Delphi(目前是运行在多平台上使用FMX框架的Tokyo版本),StringHelper类提供了一个跨平台字符索引解决方案。该实现假定所有支持的平台都采用基于0的索引。
例如:
var
myString: String;
myChar: Char;
begin
myChar := myString.Chars[0];
end;
// AIndex: 0-based
function FindCharactedOfStringFromIndex(const AString: String; const AIndex: Integer): Char;
const
{$IFDEF CONDITIONALEXPRESSIONS}
{$IF CompilerVersion >= 24}
STRING_FIRST_CHAR_INDEX = Low(AString);
{$ELSE}
STRING_FIRST_CHAR_INDEX = 1;
{$ENDIF}
{$ELSE}
STRING_FIRST_CHAR_INDEX = 1;
{$ENDIF}
var
index: Integer;
begin
index := STRING_FIRST_CHAR_INDEX + AIndex;
Result := AString[index];
end;