当前位置 : 主页 > 编程语言 > delphi >

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

来源:互联网 收集:自由互联 发布时间:2021-06-23
我一直在寻找如何做到这一点的日子,没有什么是我需要做的(或者我只是不明白如何实现解决方案). 我需要做的是将一个字符串(一个街道地址)解析成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

问题是地址长度不一样.地址有时候会像’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];

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

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

Is there a way to get the last string and then go backwards from
there?

如果要获取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;

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

for i := AddressList.Count-1 downto 0 do
  AddressList.Strings[i]; //Not sure what to do here

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

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

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

所以我想建议你有一个城市数据库,它可以比较字符串
地址列表t,o,并查看是否匹配.

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

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

网友评论