繁体   English   中英

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

[英]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.split(字符串正则表达式)

例如,您的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM