テーブルを含む HTML の文字列があります。ただし、タグ
の後に文字がある場合もあります。文字列からタグの
後のすべてを削除したい。
Javaでこれを行う方法についてのアイデアはありますか?</table>
</table>
4 に答える
3
この文字列であると仮定するとstr
、次のことができます。
str = str.replaceAll("</table>.*","</table>");
于 2012-05-04T13:30:57.413 に答える
1
@Andrew Logvinovが提案するように、正規表現を使用してください。
str.replaceAll("</table>.*","</table>");
これが意味することは、リテラル文字列の"</table>"
後に任意の文字.
が 0 回以上繰り返されたものを取り、*
それをリテラル文字列に置き換えることです。"</table>"
このメソッドはすべてを置き換えることに注意してください (したがって、最初に一致した文字列が取得され、残りの文字列が削除されます)。そのため、複数のテーブルまたはネストされたテーブルがある場合、これはうまく機能しません。より良い解決策を得るために、正規表現の使い方を学びましょう。(または、indexOf および String クラスにあるメソッドを操作するだけです)
于 2012-05-04T13:47:57.817 に答える
0
String endTableTag = "</table>";
String html = "<table><tr><td>Hello</td></tr></table>yadayadayada";
int index = html.lastIndexOf(endTableTag);
String cleanedup;
if (index>-1) {
// Removes everything after the last table end tag
cleanedup = html.substring(0, index + endTableTag.length());
} else {
cleanedup = html;
}
System.out.println(cleanedup);
于 2012-05-04T13:31:05.040 に答える
0
String test = "testabc</table>anothertest</table>hahhah";
test = str.substring(0, (str.lastIndexOf("</table>")+"</table>".length()));
System.out.println(str.substring(0, (str.lastIndexOf("</table>")+"</table>".length())));
System.out.println(test);
またはそれをテストするには...
test.replaceAll("</table>.*","</table>"); would be better! ;)
良いですが、1 より多いと問題が発生する可能性があります。;) したがって、「lastIndexOf()」で作業する方が良いでしょう。
于 2012-05-04T13:45:10.643 に答える