用Java解析数组中字符串的一部分

时间:2015-12-23 11:08:38

标签: java parsing arraylist

我在解析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个连字符之后写出一些内容来解析所有内容,直到前者的下一个“/”和后者的第四个“/”。

我不知道如何做到这一点,并且我可能没有想到更好的方法。

有没有人对如何做到这一点有任何想法?

2 个答案:

答案 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对象数组。

String.split(String regex)

例如,您的字符串: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为空,这来自//部分的分割。