好的,我有一个像这样<table>
结构的字符串:
String tableTags="<table> "+
"<tr>" +
"<td> val1 </td>" +
"<td> val2 </td>" +
"</tr>" +
"<tr>" +
"<td> val3 </td>" +
"<td> val4 </td>" +
"</tr>" +
"</table>";
我想将String tableTags
转换为HasHMap<String, List<String>>
。 HashMap
的每个键都是表格行&amp;每个键的List<String>
将包含该行的所有值。
注意:表的行数和列数未知。它也是一个完整的表(即没有空单元格)。
或者你能找到更好的方法或更容易吗?您不需要使用HashMap
,您可以使用String[][]
?
答案 0 :(得分:0)
String
。关于这一点的问题没有太多细节,所以你可能有自己的计划应该是什么。HashMap
。答案 1 :(得分:0)
尝试使用此解析来解析所有<td>
值:
现在取决于你想要存储它的位置。我已将其存储在List
以及String[][]
。
String tableTags = "<table> " + "<tr>" + "<td> val1 </td>" + "<td> val2 </td>" + "</tr>"
+ "<tr>" + "<td> val3 </td>" + "<td> val4 </td>" + "</tr>" + "</table>";
int fromIndex = 0;
int toIndex = 0;
List<String> list = new ArrayList<String>();
while (true) {
fromIndex = tableTags.indexOf("<td>", fromIndex);
if (fromIndex == -1) {
break;
} else {
toIndex = tableTags.indexOf("</td>", fromIndex);
if (toIndex == -1) {
break;
}
list.add(tableTags.substring(fromIndex + 4, toIndex).trim());
fromIndex = toIndex;
}
}
int tdsPerRow = 2;
String[][] array = new String[list.size() / tdsPerRow][tdsPerRow];
int row = 0;
int col = 0;
for (String str : list) {
if (col == tdsPerRow) {
row++;
col = 0;
}
array[row][col] = str;
col++;
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i][0] + "-" + array[i][1]);
}
答案 2 :(得分:0)
最后我把它弄好了。
public static String[][] convertTableHtmlTagsTo2DArray(String tableHtmlTags){
String[] allRows=tableHtmlTags.split("</tr>");
if(allRows!=null && allRows.length>0){
int noOfRow=allRows.length;
String[] allElementsInFirstRow=allRows[0].split("</td>");
int noOfCol=allElementsInFirstRow.length;
String[][] tableHtmlTagsIn2DArray=new String[noOfRow][noOfCol];
for(int r=0; r<allRows.length; r++){
String eachRow = allRows[r];
String[] allElementsInEachRow=allRows[r].split("</td>");
for(int e=0; e<allElementsInEachRow.length; e++){
String eachElement=allElementsInEachRow[e];
eachElement=MyValidation.cleanString(eachElement); // if it is null it will turn to "";
eachElement=eachElement.replaceAll(".*<td>", "");
eachElement=MyValidation.cleanString(eachElement);
tableHtmlTagsIn2DArray[r][e]=eachElement;
}
}
return tableHtmlTagsIn2DArray;
}
return null;
}