从arraylist获取字符串的最佳方法是什么,其中我有字符串的第一部分

时间:2014-01-16 16:20:53

标签: java

我有一个arraylist:

List<String> lines = new ArrayList<String>();

包含网页的html。

我制作了一个arraylist'resList',其中包含搜索到的字符串“abcde”,并将所述6行html打印到控制台:

ArrayList<String> resList = new ArrayList<String>();
String searchString = "(?i).*abcde.*";
for (String curVal : lines){
if (curVal.matches(searchString)){
resList.add(curVal);
System.out.println(items);

输出

<span class="bl-title">   <a href="abcdefPHOBIA_00">ACRO -  abcdefPHOBIA_00</a>
<span class="bl-title">   <a href="abcdefPHOBIA_11">ACRO -  abcdefPHOBIA_11</a>
<span class="bl-title">   <a href="abcdefPHOBIA_22">ACRO -  abcdefPHOBIA_22</a>
<span class="bl-title">   <a href="abcdefPHOBIA_33">ACRO -  abcdefPHOBIA_33</a>
<span class="bl-title">   <a href="abcdefPHOBIA_44">ACRO -  abcdefPHOBIA_44</a>
<span class="bl-title">   <a href="abcdefPHOBIA_55">ACRO -  abcdefPHOBIA_55</a>

我想阅读所有字符串:

abcdefPHOBIA_00, abcdefPHOBIA_11, abcdefPHOBIA_22, abcdefPHOBIA_33, abcdefPHOBIA_44, abcdefPHOBIA_55

进入arrayList。

尝试拆分(“ - ”),然后尝试使用startsWith(),但这不是我想要的。 还尝试了一个带正则表达式的模式,但似乎没有取得多大进展。

在改善长期方面以及完成这项工作方面,哪种方式最有益,将会有所帮助。

如果问题不够详细,请道歉。

2 个答案:

答案 0 :(得分:0)

尝试:

Pattern pattern = Pattern.compile("\"(abcde[^\"]*)\"");
for (String curVal : lines)
{
    Matcher matcher = pattern.matcher(curVal);
    while (matcher.find())
    {
        resList.add(matcher.group(1));
    }
}

这将找到包含在双引号

中的格式为abcede。*的所有字符串

答案 1 :(得分:0)

我使用了jsoup API。我认为这是一种操作数据的简单方法,而不是太多的代码!

这将转到所有标签,然后在每个标签中搜索“ACRO”中的文本。 然后我给了整个文本后,我将它们分成了一个由“ - ”分割的二维数组。 在那之后,One可以用数组做他喜欢的事情。

所以: - &gt; ACRO - abcdefPHOBIA_00

doc = Jsoup.connect("http://webpage.com").get();
Elements links = doc.select("a[href]");

String s = links.select("a:matches(ACRO)").first().text();
String[] str_arr = s.split(" - ");

//for example
System.out.println("before the - " + str_arr[0]);

System.out.println("after the - " + str_arr[1]);
之前

之后 - abcdefPHOBIA_00