80,360
社区成员
发帖
与我相关
我的任务
分享
public ArrayList<String> findallclasstitle(char code[]) // 承担核心工作的方法
{
int howlong;
int titlecharnum;
ArrayList<String> finaltitlelist=new ArrayList<String>();
StringBuilder sbtitle=new StringBuilder();
howlong=code.length;
String findstr="class=\"title\">";
String findstr2="</a>";
char findchar[]=findstr.toCharArray();
char findchar2[]=findstr2.toCharArray();
ArrayList<Integer> codefindtitlelist=new ArrayList<Integer>();
for(int index=0;index<howlong-13;index++) //(我知道写的很蠢..)
抓到网页代码的char数组中,标题正文前的标签的最后一 个字符 > 的下标
{
if(code[index]==findchar[0]&&code[index+1]==findchar[1]&&code[index+2]==findchar[2]&&code[index+3]==findchar[3]
&&code[index+4]==findchar[4]&&code[index+5]==findchar[5]&&code[index+6]==findchar[6]
&&code[index+7]==findchar[7]&&code[index+8]==findchar[8]&&code[index+9]==findchar[9]&&code[index+10]==findchar[10]
&&code[index+11]==findchar[11]&&code[index+12]==findchar[12]&&code[index+13]==findchar[13])
{
codefindtitlelist.add(index+13);
}
}
for(int log=0,xiabiao=1,listxiabiao=0;log<howlong;log++) //获取标题的字符数量
{
if(code[codefindtitlelist.get(listxiabiao).intValue()+xiabiao]==findchar2[0]&&
code[codefindtitlelist.get(listxiabiao).intValue()+xiabiao+1]==findchar2[1]&&
code[codefindtitlelist.get(listxiabiao).intValue()+xiabiao+2]==findchar2[2]&&
code[codefindtitlelist.get(listxiabiao).intValue()+xiabiao+3]==findchar2[3])
{
titlecharnum=xiabiao-1; //这里,获取到了当前的标题字符数
for(int findtitle=1;findtitle<=titlecharnum;)
{
sbtitle.append(code[codefindtitlelist.get(listxiabiao).intValue()+findtitle]);
findtitle++;
if(findtitle>titlecharnum)
{
finaltitlelist.add(sbtitle.toString());
Log.v("Text", sbtitle.toString()); //输出到log里
sbtitle=new StringBuilder(); //注意清空StringBuilder,因为接下来要重复用
}
}
xiabiao=1; //后推下标重置为1
listxiabiao++; //完成后继续跳到下一个标题前抓取
if(listxiabiao==codefindtitlelist.size())
{
break;
}
}
else
{
xiabiao++; //匹配不成功,后推下标自增1继续匹配,直到匹配成功
}
}
return finaltitlelist; //返回最后的ArrayList对象
}
}