这是scala书中的示例代码。 该对象有一个方法可以删除给定字符串中的任何html标记。 但出于理由,它删除了整个字符串内容而不仅仅是HTML标记。我可以知道为什么吗?
object HtmlUtils {
def removeMarkup(input: String) = {
input.replaceAll("""</?\w[^>]*>""","")
input.replaceAll("<.*>","")
}
}
val ahtmlText = "<html><body><h1>Introduction</h1></body></html>"
val anewhtmlText = HtmlUtils.removeMarkup(ahtmlText)
println(anewhtmlText)
println(s"Before removing html tags, the string was $ahtmlText and after rmoving html tags the string became $anewhtmlText")
答案 0 :(得分:0)
您的第二个replaceAll
不需要,并且会因.*
的贪婪匹配而删除所有内容。此外,如果需要,您的第一个replaceAll
可以进行推广。以下修订后的removeMarkup
应该对您有用:
object HtmlUtils {
def removeMarkup(input: String) = {
input.replaceAll("""</?[^>]*>""", "")
}
}
scala> val ahtmlText = "<html><body><h1>Introduction</h1></body></html>"
ahtmlText: String = <html><body><h1>Introduction</h1></body></html>
scala> val anewhtmlText = HtmlUtils.removeMarkup(ahtmlText)
anewhtmlText: String = Introduction