我有字符串
stringst...ringstring11<jscript>qweqweqw....eqwe</jscript>22string..string
我必须删除标签之间的所有内容
stringst...ringstring1122string..string
请告诉我该怎么做
String[] split = response.split("\\<jscript\\>");
它不起作用
答案 0 :(得分:2)
使用正则表达式和replaceAll替换标记以及它们之间的任何内容。
又快又脏:
str = str.replaceAll("<jscript>[^<]*?</jscript>","");
应该注意,这不是一个可扩展的解决方案,并且有严重的局限性。 HTML不应该使用正则表达式进行解析,但这是一种在这些限制范围内工作的简单方法。
限制:
答案 1 :(得分:2)
如果您正在解析类似HTML的内容并且它是单个<jscript></jscript>
您可以执行类似
int frontIndex = originalString.IndexOf('<jscript>');
int backIndex = originalString.IndexOf('</jscript>');
String front = originalString.substring(0,frontIndex);
String back = originalString.substring(backIndex,originalString.length());
originalString = front + back;
这将取消<jscript>
之前的所有内容,</jscript>
之后的所有内容,直到string.length()
,然后将它们连接在一起并替换原始字符串。
答案 2 :(得分:0)
你也可以使用常见的老朋友apache。它有StringUtils.removePattern。
文档说
public static String removePattern(String source,String regex)
删除与给定匹配的源String的每个子字符串 使用DOTALL选项
的正则表达式
您可以通过以下方式使用它:
String result = StringUtils.removePattern(response, "<jscript>[^<]*?</jscript>");
值得一提的是,使用正则表达式解析html可能会让你陷入黑洞并且会降低你的预期寿命。 更新:添加了Robby Cornelissen建议