私はしばらくこれを達成しようと努めてきました、いくつかのエンコードされた形式のような多くのHTMLタグを含む文字列を持っています<と> (スペースなしで)文字列の間。誰でもこれらのタグを削除して、プレーンな文字列を取得できるようにすることはできますか?
最後に、ダートの組み込み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;
}
これを行うためのより明確な方法があるかどうかはわかりませんが、これでうまくいきました。
3rd LibなしでRegExpを使用できます
String removeAllHtmlTags(String htmlText) {
RegExp exp = RegExp(
r"<[^>]*>",
multiLine: true,
caseSensitive: true
);
return htmlText.replaceAll(exp, '');
}
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
3ステップ
まず、これを「pubspec.yaml」ファイルに追加します
依存関係:flutter_html:^ 0.8.2
次に、Dartファイルにインポートします
import 'package:flutter_html_view/flutter_html_view.Dart';
3番目、単に使用する
HtmlView(data: "Your Html Data")、
使うだけで
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);
});