我在解析Arraylist
中每个项目的特定部分时遇到问题。
Arraylist
包含以下两种格式的字符串:
http://some-url.com/that/goes-to-some-place-abc-defg/api/xml
http://some-url.com/that/goes-to-somewhere-zyxw-vut/api/xml
关键是字符串不会改变,唯一不同的是“abc-defg”和“zyxw-vut”< / em>的。请注意,它们可能是不同长度的任何东西。这是我需要解析在其他地方使用的部分。
我只有想法是在第5个连字符之后写出一些内容来解析所有内容,直到前者的下一个“/”和后者的第四个“/”。
我不知道如何做到这一点,并且我可能没有想到更好的方法。
有没有人对如何做到这一点有任何想法?
答案 0 :(得分:0)
你可以保存&#34;随机&#34; ArrayList中的部分。这将节省内存,因为字符串的其余部分始终是相同的:
ArrayList<String> list = new ArrayList<String>();
//Add your random parts
list.add("abc-defg");
list.add("zyxw-vut");
/* ... */
如果您想从列表中获取完整链接,请使用辅助方法:
private String getLinkFromList(int index) {
if (list == null || index < 0 || index >= list.size())
return null;
return "http://some-url.com/that/goes-to-somewhere-" + list.get(index) + "/api/xml";
}
一些注释:
此解决方案还有一些缺点:在调用getLinkFromList(int)
方法时始终分配内存。当您在ArrayList中保存完整链接并始终只使用ArrayList中的get(int)
方法时,您可以获得轻微的性能提升。如果该列表不大于几兆字节且您的代码仅在(现代)计算机上运行,那么您应该更喜欢保存完整链接。
但是当你的代码在Android手机上运行时(或当你的列表是几个GigaBytes大)时,内存仍然是一个需要考虑的重要事项,那么你应该让你的列表尽可能小,并使用我的方法,如上所示。
答案 1 :(得分:0)
您可以使用split("\\/") ;
这将返回沿/
分隔符分割的String对象数组。
例如,您的字符串:http://some-url.com/that/goes-to-some-place-abc-defg/api/xml
这将返回一个大小为7的数组,数组的内容为:
http:
some-url.com
that
goes-to-some-place-abc-defg
api
xml
你想要的是这个数组的索引4。
请注意,索引1为空,这来自//
部分的分割。