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

在Java中解析出数组中的字符串部分,java,parsing,arraylist,Java,Parsing,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”。请注意,它们可能是长度不同的任何东西。这是我需要解析出来在其他地方使

在解析
数组列表中每个项的特定部分时,我很难找到解决方案

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个连字符到下一个“/”之后解析出所有内容,后一个“/”的第4个连字符到下一个“/”

我不知道如何做到这一点,但可能有一个更好的方法,我还没有想到

有人对如何进行此操作有任何想法吗?

您可以将“随机”部分保存在ArrayList中。这将节省内存,因为字符串的其余部分始终相同:

ArrayList<String> list = new ArrayList<String>();
//Add your random parts
list.add("abc-defg");
list.add("zyxw-vut");
/* ... */
ArrayList list=new ArrayList();
//添加你的随机部分
列表。添加(“abc defg”);
列表。添加(“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索引){
if(list==null | | index<0 | | index>=list.size())
返回null;
返回“http://some-url.com/that/goes-to-somewhere-“+list.get(index)+”/api/xml”;
}
一些注意事项:
这种解决方案还有一些缺点:当调用
getLinkFromList(int)
方法时,总是分配内存。当您在ArrayList中保存完整链接并始终使用ArrayList中的
get(int)
方法时,您的性能会略有提高。如果该列表不超过几兆字节,并且您的代码仅在(现代)计算机上运行,那么您应该更愿意保存完整链接。
但是当你的代码在Android手机上运行(或者当你的列表是几千兆字节)时,内存仍然是一个重要的考虑因素,那么你应该把你的列表尽量小,用我的方法,如上面所示。

< p>你可以使用<代码>分割(“\\”);代码>

这将返回沿
/
分隔符拆分的字符串对象数组

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

您好,感谢您的回复。问题是“随机部分”来自整个字符串,它们不在我可以找到它们的位置。它来自XML,它将随着新的添加而不断变化。我想将“random.parts”添加到ArrayList中,但我需要从包含整个链接的ArrayList中获取它们。希望这能澄清。