如何在TStringList中获取最后一个字符串

Ada*_*ers 3 delphi string tstringlist

我一直在寻找如何做到这一点的日子,没有什么是我需要做的(或者我只是不明白如何实现解决方案).

我需要做的是将一个字符串(一个街道地址)解析成TStringList,然后将这些字符串从列表中设置为变量然后传递给程序的其余部分.我已经把列表运行正常了:

var
AddressList : TStringList;
i : integer;

begin
AddressList := TStringList.Create;
AddressList.Delimiter := ' ';
AddressList.DelimitedText := RawAddressStr; //RawAddressStr is parsed from another file and the string result is something like '1234 Dark Souls Lane Wyoming, MI 48419'

for i := 0 to AddressList.Count-1 do
   AddressList.Strings[i]; //Not sure what to do here
Run Code Online (Sandbox Code Playgroud)

问题是地址长度不一样.地址有时候会像'1234 Dark Souls Two Lane Wyoming ......'或'1234 Dark Lane Wyoming ......'

所以我需要能够使用这个TStringList将Zip,State和City设置为变量供以后使用.我会使用TStringList.Find,但邮政编码并不总是相同.有没有办法获得最后一个字符串,然后从那里后退?(向后退,因为一旦我获得City,状态ZIP我可以从RawAddressStr中删除它,然后将其余部分设置为地址字符串.)

谢谢.

编辑,这是我需要的代码(感谢下面的评论):AddressList:= TStringList.Create;

AddressList.Delimiter := ' ';
AddressList.DelimitedText := RawAddressStr;

for i := 0 to AddressList.Count-1 do
  LastIndex := AddressList.Count - 1;
  ZipStr := AddressList[LastIndex];
  StateStr := AddressList[LastIndex - 1];
  CityStr := AddressList[LastIndex - 2];
Run Code Online (Sandbox Code Playgroud)

现在我可以使用StringReplace从完整地址字符串中取出City,State Zip,并将其设置为要使用的地址字符串.

xai*_*aid 11

我有点不确定你正在寻找什么,因为你问如何获取你的StringList的最后一个字符串,然后在你问的问题的最后

有没有办法获得最后一个字符串,然后从那里后退?

如果要获取StringList的最后一个字符串,可以使用

  var AddressList : TStringList;
      MyString: string;
begin
  MyString := AddressList.Last; //this...
  MyString := AddressList.Strings[AddressList.Count-1]; //...and this is essentially the same thing
end;
Run Code Online (Sandbox Code Playgroud)

如果你想反向或反向循环,你应该写:

for i := AddressList.Count-1 downto 0 do
  AddressList.Strings[i]; //Not sure what to do here
Run Code Online (Sandbox Code Playgroud)

请注意,它表示"DOWNTO"而不是"TO".

现在,如果你想停在一个特定的字符串,让我们说邮政编码,你需要让你的软件了解它正在读什么.

哪一个分隔的字符串是城市?哪一个是地址?对于软件来说,字符串是一个字符串,它不知道,甚至不关心它正在读什么.

所以,我想建议你有城市的,它可以比较AddressList中T,○字符串的数据库,并查看是否有匹配.

您还可以在算法中实现一些逻辑.如果您知道分隔的AdressList字符串的最后一个字符串始终是City-name,那么您知道您可以使用城市名称.

如果您知道邮政编码和城市名称之间的所有内容都是街道地址,那么只需复制ZIP和城市名称之间的所有内容,并将其用作街道名称信息.

  • tStringList没有LAST方法。只有tList可以。 (3认同)