[英]Parsing out parts of a string in an array in Java
我在解析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” 。 请注意,它们的长度可以不同。 这是我需要解析以在其他地方使用的部分。
我唯一的想法是写一些东西来解析从第5个连字符到前一个下一个“ /”,为第四个到下一个“ /”之后的所有内容。
我不确定如何执行此操作,而且可能还有我没想到的更好的方法。
有人对如何执行此操作有任何想法吗?
您可以只将“随机”部分保存在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手机上运行时(或列表大到几GB时),内存仍然是要考虑的重要问题,那么您应该使列表尽可能小,并使用如上所述的方法。
您可以使用split("\\\\/") ;
这将返回沿/
分隔符分割的String对象数组。
例如,您的String: http://some-url.com/that/goes-to-some-place-abc-defg/api/xml
: 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为空,这来自//
部分的拆分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.