web-dev-qa-db-ja.com

Dartの文字列からHTMLタグを削除する

私はしばらくこれを達成しようと努めてきました、いくつかのエンコードされた形式のような多くのHTMLタグを含む文字列を持っています<と> (スペースなしで)文字列の間。誰でもこれらのタグを削除して、プレーンな文字列を取得できるようにすることはできますか?

17
Jaswant Singh

最後に、ダートの組み込み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;
}

これを行うためのより明確な方法があるかどうかはわかりませんが、これでうまくいきました。

27
Jaswant Singh

3rd LibなしでRegExpを使用できます

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

    return htmlText.replaceAll(exp, '');
  }
13
Phat Tran Ky
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
0
reimi

3ステップ

まず、これを「pubspec.yaml」ファイルに追加します

依存関係:flutter_html:^ 0.8.2

次に、Dartファイルにインポートします

import 'package:flutter_html_view/flutter_html_view.Dart';

3番目、単に使用する

HtmlView(data: "Your Html Data")、

0
lost veteran

使うだけで

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);
});
0
John Wang