如何在我的 getProjectLists 上调用我创建的方法以从字符串中删除 HTML 标签

How to call my created method on my getProjectLists in order to remove HTML tags from String

这是我的 getProjectLists 操作

  def getProjectLists() {
      def currentUser = springSecurityService.currentUser
      def kups = ([['name':'<b>Sample 1</b>'.removeHthml()],
      ['name':'<b>Sample 2</b>']])
  render kups as JSON  
 }

这是我的class和方法

class HtmlTagRemove {
    static String removeHthml(String inputStr) {
      return inputStr.replaceAll("<.*?>","")
    }
}

这是我遇到的错误

No signature of method: java.lang.String.removeHtml() is applicable for argument types: () value: []

跟进 (即使回答了原始问题,我的后续问题如下)

我该怎么做才能使我的方法可以从字符串调用,例如:'<b>Sample 1</b>'.removeHtml()?

前提是它们在同一个包中(否则你需要导入HtmlTagRemove或使用完整的包名对其进行质量处理)你可以这样做:

def kups = ([['name':HtmlTagRemove.removeHthml('<b>Sample 1</b>')], ['name':'<b>Sample 2</b>']])

原因是 removeHtml 是一个静态方法。

回答后续问题:

您可以扩展字符串 class。 Documentation

​String.metaClass.removeHtml {    
    delegate.replaceAll("<.*?>","")
}

'<b>Sample 1</b>'.removeHtml()

我会使用像 Jsoup 这样的库从字符串中删除 html:

Document doc = Jsoup.parse(html)
return doc.text())