首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从html内容的可见文本中删除搜索文本

从html内容的可见文本中删除搜索文本
EN

Stack Overflow用户
提问于 2021-12-09 09:30:45
回答 1查看 413关注 0票数 0

在我的应用中,有一个搜索功能,可以过滤用户输入的搜索文本的消息列表。但是我的消息项的body字段包含一个完整格式化的HTML (<html>...</html>)。我想通过将搜索过滤应用到消息正文字段来过滤消息列表。

代码语言:javascript
复制
 _getFilteredMessageList() {
    if (!StringHelper.isNullOrWhiteSpace(this._searchText)) {
      return _messagesList.where((msg) => msg.title.toLowerCase().contains(this._searchText.toLowerCase()) || msg.body.toLowerCase().contains(this._searchText.toLowerCase())).toList();
    }
    return _messagesList;
  }

这里,msg.body是HTML字段。

我只想通过用户搜索可见的文本内容,忽略所有的非可视标记和注释.

是否有任何程序包或逻辑来实现此功能?

颤振v2.2.2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-10 10:03:29

从web中找到解决方案,示例代码如下所示。

代码语言:javascript
复制
import 'package:html/parser.dart';

static String getHTMLBodyPlainTextFromHTMLDocument(String htmlString) {
  var document = parse(htmlString);
  String parsedString = parse(document.body!.text).documentElement!.text;
  // parsedString = StringHelper.removeLineBreaks(parsedString);
  // parsedString = StringHelper.repalceMultipleSpacesWithSingleSpace(parsedString);
  return parsedString.trim();
}

上面的方法也将提供给用户在WebView小部件中可见的纯文本,并且它将完全去掉html标记和非可视元素。但是纯文本中将有许多不相关的空间,我们必须分别删除它们,以适当的间距来删除文本,以节省可变的内存大小。

上面的代码注释了两行代码,作为手工编写的单独的助手方法,可以删除换行符和额外的空格。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70287499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档