Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android/Java数组中从字符串中清除HTML并返回结果的最快方法_Java_Android_Arrays_Regex_Replace - Fatal编程技术网

在Android/Java数组中从字符串中清除HTML并返回结果的最快方法

在Android/Java数组中从字符串中清除HTML并返回结果的最快方法,java,android,arrays,regex,replace,Java,Android,Arrays,Regex,Replace,我正在使用JSOUP解析一个包含900个条目的for循环中的html字符串,但是,当尝试读取html的部分时,异步任务需要大约40秒才能完成。。。string.replace会将时间缩短到8到10秒 像这样的JSOUP非常快: element.text(); JSOUP like so速度很慢: element.html(); 我可以在任何东西上使用JSOUP文本,但第二个href除外,我需要下面字符串中948中的一个数字。所以我需要在…上使用.html和.replace 我有一个字符串,看

我正在使用JSOUP解析一个包含900个条目的for循环中的html字符串,但是,当尝试读取html的部分时,异步任务需要大约40秒才能完成。。。string.replace会将时间缩短到8到10秒

像这样的JSOUP非常快:

element.text();
JSOUP like so速度很慢:

element.html();
我可以在任何东西上使用JSOUP文本,但第二个href除外,我需要下面字符串中948中的一个数字。所以我需要在…上使用.html和.replace

我有一个字符串,看起来是相同的结构,每次都有不同的数据:

String siteDescription = "<b><font size='+2'>46Q01S: Mt. Ryan</font></b><hr></hr><table cellspacing='0' cellpadding='0' width='400'>" +
                "<tr><td>Elev: 2800 feet</td></tr><tr><td>Snow Water Equivalent: 2.4 inches</td><td>Snow Water Equivalent: 92 pct norm</td></tr>" +
                "<tr><td>Water Year Precipitation: 2 inches</td><td>Water Year Precipitation: 66 pct norm</td></tr>" +
                "<tr><td>Snow Depth: 14 inches</td><td>Snow Density: 17 percent</td></tr>" +
                "<tr><td><a href='http://www.wcc.nrcs.usda.gov/cgibin/wygraph-multi.pl?state=AK&amp;wateryear=current&amp;stationidname=46Q01S'>Time Series Chart</a></td>" +
                "<td><a href='http://www.wcc.nrcs.usda.gov/nwcc/site?sitenum=948'>Site Info</a></td></tr></table>" +
                "<a href='http://www.wcc.nrcs.usda.gov/siteimages/948.jpg'><img width='400' alt='img not available' src='http://www.wcc.nrcs.usda.gov/siteimages/948.jpg'/></a><hr></hr>" +
                "Generated: 26 Dec 2014";
我正在努力完善我的代码,并找出我是否真的需要做这么多?最后,我将它添加到一个数组中,以便轻松使用本描述中的片段。我在每个标签和2个标签后面添加了一个逗号,以便从字符串数组中轻松读取。以下是我的建议:

String descrip = siteDescription.replace(
    "<table cellspacing=\"0\" cellpadding=\"0\" width=\"400\">", "");
String descri = descrip.replace("<td>", "");
String descr = descri.replace("</td>", ",");
String desc = descr.replace("</table>", "");
String des = desc.replace("<tr>", "");
String de = des.replace("</tr>", "");
String d = de.replace("<hr></hr>", ",");

String Name;
String Elevation;
String SWEinches;
String SWEPercentNormal;
String WYPinches;
String WYPPercentNormal;
String SnowDepth;
String SnowDensity;
String SiteImage;
String siteNumber;

String[] splitData = d.split(",");
for (int j = 0; j < splitData.length; j++) {
    splitData[j].replaceAll("\\W", "");
}
if (splitData[0] != null) {
    Name = splitData[0];
} else {
    Name = "N/A";
}
if (splitData[1] != null) {
    Elevation = splitData[1];
} else {
    Elevation = "N/A";
}
if (splitData[2] != null) {
    SWEinches = splitData[2];
} else {
    SWEinches = "N/A";
}
if (splitData[3] != null) {
    SWEPercentNormal = splitData[3];
} else {
    SWEPercentNormal = "N/A";
}
if (splitData[4] != null) {
    WYPinches = splitData[4];
} else {
    WYPinches = "N/A";
}
if (splitData[5] != null) {
    WYPPercentNormal = splitData[5];
} else {
    WYPPercentNormal = "N/A";
}
if (splitData[6] != null) {
    SnowDepth = splitData[6];
} else {
    SnowDepth = "N/A";
}
if (splitData[7] != null) {
    SnowDensity = splitData[7];
} else {
    SnowDensity = "N/A";
}
if (splitData[8] != null) {
    SiteImage = splitData[8];
} else {
    SiteImage = "N/A";
}
if (splitData[9] != null) {
    siteNumber = splitData[9].replaceAll("\\D", "");
} else {
    siteNumber = "000000";
}
我需要的数据在表中。有没有更简单的方法?更快的方式?更好的方法?!我创造了一个新的世界

编辑:::在提交本文后,我有一个想法,使用JSOUP并像这样选择单个图像元素会更快:

    Document doc = Jsoup.parse(siteDescription);
//THIS WORKS FAST ENOUGH...
                    Elements tds = doc.getElementsByTag("td");
                    for (int i = 0; i < tds.size(); i++) {
                        //Log.e("TD", i + " : " + tds.get(5).text());
                        siteSnowDepth = tds.get(5).text();
                    }
//THIS ACTUALLY DOES TOO!
                    Elements imgs = doc.select("img");
                    for (int i = 0; i < imgs.size(); i++) {
                        Log.v("LINK", imgs.attr("src").replaceAll("\\D", ""));
                    }

尝试使用正则表达式(例如desc.replace)减少replace调用;要同时匹配tr open和close标记,请执行以下操作:String descripp=sitescription.replaceAll |,;字符串d=descripp.replaceAll |;