需要Android Java字符串代码优化
我对解析html数据有问题。Java的String.indexof()非常慢。有没有人能提出任何解决方案来显著加快这一进程需要Android Java字符串代码优化,android,string,performance,indexof,Android,String,Performance,Indexof,我对解析html数据有问题。Java的String.indexof()非常慢。有没有人能提出任何解决方案来显著加快这一进程 while (counter2 <= found) { number = Integer.toString(counter2); start = page.indexOf("<resu
while (counter2 <= found)
{
number = Integer.toString(counter2);
start = page.indexOf("<result" + number + ">") + 8 + number.length();
end = page.indexOf("</result" + number + ">");
if (start > 0 && end > 0)
{
buffer = page.substring(start, end);
}
page = page.substring(end, page.length());
start = buffer.indexOf("<word>") + 6;
end = buffer.indexOf("</word>");
if (start > 0 && end > 0)
{
Word = buffer.substring(start, end);
}
start = buffer.indexOf("<vocabulary>") + 12;
end = buffer.indexOf("</vocabulary>");
if (start > 0 && end > 0)
{
Dictionary = buffer.substring(start, end);
}
start = buffer.indexOf("<id>") + 4;
end = buffer.indexOf("</id>");
if (start > 0 && end > 0)
{
ID = buffer.substring(start, end);
}
sqlDriver.createDictionaryWord("Wordlist", ID, Word, Dictionary);
// counter = counter + 1;
counter2 = counter2 + 1;
}
while(计数器2 0&&end>0)
{
缓冲区=页面子字符串(开始、结束);
}
page=page.substring(end,page.length());
start=buffer.indexOf(“”+6;
end=buffer.indexOf(“”);
如果(开始>0&&结束>0)
{
字=缓冲区。子字符串(开始、结束);
}
start=buffer.indexOf(“”+12;
end=buffer.indexOf(“”);
如果(开始>0&&结束>0)
{
Dictionary=buffer.substring(开始、结束);
}
start=buffer.indexOf(“”+4;
end=buffer.indexOf(“”);
如果(开始>0&&结束>0)
{
ID=缓冲区。子字符串(开始、结束);
}
createDictionaryWord(“单词列表”,ID,单词,字典);
//计数器=计数器+1;
计数器2=计数器2+1;
}
我需要让它至少快5倍。感谢您的帮助。
模式匹配器
对于较长的字符串,使用regex比使用indexOf()
更快(对于较小的字符串,indexOf()
比使用regex更好)。使用文本和正则表达式查找字符串模式的索引
Pattern pattern = Pattern.compile(regex);
public static void getIndices(String text, Pattern pattern) {
Matcher matcher = pattern.matcher(text);
matcher.find();
System.out.print("Start index: " + matcher.start());
System.out.print("End index: " + matcher.end());
}
请注意,对于每个正则表达式,只需将正则表达式编译为
模式
对象一次,因此不要将其放入循环中 我创建了xml,并使用建议来使用XmlPullParser。速度稍微快一点,但在某些设备上仍会持续一分钟,文件大小为1.7mb。非常令人困惑。为什么不使用a来表示这一点?请给我一个例子,以获取这两个值之间的值start=buffer.indexOf(“”+12;end=buffer.indexOf(“”);我需要介于两者之间的值,因为您正在解析XML内容吗?如果是这样,正如Michael在评论中所建议的,您应该使用