Delphi - 在给定的位置/索引找到字符

7

我已经搜索了很多内容,现在想在Delphi/Lazarus中实现这个功能:给定一个位置,在另一个字符串中找到该位置的字符。我知道如何找到一个字符的位置,但我需要相反的功能:给定一个位置找到其对应的字符。非常感谢。

4个回答

13

在Delphi中,可以使用数组表示法来索引字符串中的字符。只需注意字符串中的第一个字符的索引为1。

var
  s: string;
  c: char;
begin
  s := 'Hello';
  c := s[1]; //H
end;

注意:字符从1开始计数。 - Joel Christophel

5

字符串可以像数组一样访问。

MyString[12]会给你字符串中第12个字符。 注意:这是1索引(因为0位置用来保存字符串的长度)

示例:

var
  MyString : String;
  MyChar : Char;
begin
  MyString := 'This is a test';
  MyChar := MyString[4]; //MyChar is 's'
end;

2

这个问题是在2012年最后一次回答的,现在我来更新一下:

对于最新版本的Delphi(目前是运行在多平台上使用FMX框架的Tokyo版本),StringHelper类提供了一个跨平台字符索引解决方案。该实现假定所有支持的平台都采用基于0的索引。

例如:

var
  myString: String;
  myChar: Char;
begin
  myChar := myString.Chars[0]; 
end;

0
// 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;

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