0

テーブルを含む HTML の文字列があります。ただし、タグ
の後に文字がある場合もあります。文字列からタグの 後のすべてを削除したい。 Javaでこれを行う方法についてのアイデアはありますか?</table>
</table>

4

4 に答える 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 に答える