删除两个字符之间的子字符串(java)
Posted
技术标签:
【中文标题】删除两个字符之间的子字符串(java)【英文标题】:Removing a substring between two characters (java) 【发布时间】:2012-05-14 18:54:34 【问题描述】:我有一个类似这样的 java 字符串:
String string = "I <strong>really</strong> want to get rid of the strong-tags!";
我想删除标签。我还有一些其他的字符串,其中的标签更长,所以我想找到一种方法来删除“”字符之间的所有内容,包括那些字符。
一种方法是使用将字符串与正则表达式进行比较的内置字符串方法,但我不知道如何编写。
【问题讨论】:
【参考方案1】:在使用正则表达式解析 html 时建议小心(由于其允许的复杂性),但是对于“简单”HTML 和简单文本(其中没有文字 <
或 >
的文本),这将起作用:
String stripped = html.replaceAll("<.*?>", "");
【讨论】:
【参考方案2】:为了避免正则表达式:
String toRemove = StringUtils.substringBetween(string, "<", ">");
String result = StringUtils.remove(string, "<" + toRemove + ">");
对于多个实例:
String[] allToRemove = StringUtils.substringsBetween(string, "<", ">");
String result = string;
for (String toRemove : allToRemove)
result = StringUtils.remove(result, "<" + toRemove + ">");
Apache StringUtils 函数为 null、空且不匹配
【讨论】:
【参考方案3】:你应该使用
String stripped = html.replaceAll("<[^>]*>", "");
String stripped = html.replaceAll("<[^<>]*>", "");
其中<[^>]*>
匹配以<
开头的子字符串,然后匹配除>
之外的零个或多个字符(如果您选择第二个版本,则匹配除<
和>
之外的字符),然后是@987654330 @字符。
注意<.*?>
(?s)<.*?>
、<(?s:.)*?>
、<[\w\W]*?>
和许多其他效率不高的变体来解决。
请参阅regex demo。
【讨论】:
以上是关于删除两个字符之间的子字符串(java)的主要内容,如果未能解决你的问题,请参考以下文章