如何在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.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的最后一个字符串, 然后在你问的问题的最后
如果要获取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”. 现在,如果你想停在一个特定的字符串,让我们说邮政编码, 哪一个分隔的字符串是城市? 所以我想建议你有一个城市数据库,它可以比较字符串 您还可以在算法中实现一些逻辑. 如果您知道邮政编码和城市名称之间的所有内容都是街道地址,然后只需复制ZIP和City-name之间的所有内容,并将其用作街道名称信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |