从Dart中的字符串中删除HTML标签

时间:2018-07-30 12:16:58

标签: dart flutter innerhtml

我已经尝试了一段时间,我有一个字符串,其中包含许多HTML标记,这些标记采用某种编码形式 喜欢< > (在字符串之间)(无空格)。 任何人都可以协助我删除这些标签,以便获得纯字符串吗?

6 个答案:

答案 0 :(得分:14)

最后,我使用Dart内置的html包

实现了这一目标

这是我的做法

import ‘package:html/parser.dart’;
//here goes the function 

String _parseHtmlString(String htmlString) {

var document = parse(htmlString);

String parsedString = parse(document.body.text).documentElement.text;

return parsedString;
}

我不知道是否有更干净的方法可以做到这一点,但这对我有用。

答案 1 :(得分:8)

您可以简单地使用RegExp而无需3rd Lib

String removeAllHtmlTags(String htmlText) {
    RegExp exp = RegExp(
      r"<[^>]*>",
      multiLine: true,
      caseSensitive: true
    );

    return htmlText.replaceAll(exp, '');
  }

答案 2 :(得分:2)

intl 包提供了一个方法 stripHtmlIfNeeded 从字符串中去除 HTML 标签。

这个包下的 Bidi 类提供了处理双向文本的实用方法。

import 'package:intl/intl.dart';

Bidi.stripHtmlIfNeeded("<p>Hello World</p>")

如果你不想只为这个函数使用整个包,你可以在这里找到方法实现:https://api.flutter.dev/flutter/intl/Bidi/stripHtmlIfNeeded.html

答案 3 :(得分:0)

3个步骤

首先,将其添加到您的“ pubspec.yaml”文件中

  

依赖性:   flutter_html:^ 0.8.2

第二次,导入到您的dart文件

  

import'package:flutter_html_view / flutter_html_view.dart';

3rd,只需使用

  

HtmlView(数据:“您的HTML数据”),

答案 4 :(得分:0)

只需使用

import ‘package:html/parser.dart’;
对于包含<br><p>标签的字符串,

会出现问题。段落信息丢失。可以先将<br>替换为<p>,然后获取列表:

import ‘package:html/parser.dart’  as dom; 

htmlString = '<p> first ... line.<br>second.....line.<p>'; 

List<String> cleanStrings = new List<String>();
List<dom.Element> ps = parse(htmlString.replaceAll('<br>', '</p><p>'))).querySelectorAll('p');
if (ps.isNotEmpty) ps.forEach((f) {
  (f.text != '') cleanStrings.add(f.text);
});

答案 5 :(得分:-2)

use this class:

import 'package:html/parser.dart';

class HtmlTags {

  static void removeTag({ htmlString, callback }){
    var document = parse(htmlString);
    String parsedString = parse(document.body.text).documentElement.text;
    callback(parsedString);
  }
}

example: 

HtmlTags.removeTag(
 htmlString: '<h1>Hello Bug</h1>',
 callback: (string) => print(string),
);
output: Hello Bug