需要Android Java字符串代码优化

需要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

我对解析html数据有问题。Java的String.indexof()非常慢。有没有人能提出任何解决方案来显著加快这一进程

                      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在评论中所建议的,您应该使用