如何最好地清理文本
abc' a>b<c & a<b>c
转换/显示
abc' a>b≤c & a≤b>c
或明文
abc' a>b<c & a<b>c
以便我可以通过
使用它myDiv.innerHtml=... or
myDiv.setInnerHtml(..., myValidator, mySantitizer);
文字作业myDiv.text=...
转换所有&amp;和&lt;&gt;消除有效的撇号'
- HtmlEscape .convert(..)类/方法也可以转换所有&amp;在所有HtmlEscapeMode中。
可以编写我自己的Sanitizer,但希望我忽略了一些标准的库/调用。
答案 0 :(得分:1)
经过一番思考后,我意识到使用Validators或HtmlEscape / Mode并不是解决问题的最佳方法。
最初的问题是翻译引擎使用&amp;#39;对于撇号 - 可能不会将它与滥用撇号作为单引号混淆。
总之,最好的解决方案是替换&amp;#39;使用撇号的正确unicode字符,实际上是
(正确)撇号U + 0027&amp;#39;被误解的是字体字体打印(不正确)笔直 - 哪些图形人真的很讨厌 - 就像笔直“。
有了这个,您可以将翻译后的文本分配给element.text,如果它包含有问题的字符,它们会被Dart自动转义 - 并且渲染得很好。
答案 1 :(得分:0)
import 'dart:html';
import 'dart:convert';
void main() {
String htmlStr = r'abc' a>b<c & a<b>' * 3;
var reg = new RegExp(r"(.*?)(&#[1-9][0-9]{1,3}|[A-Za-z][0-9A-Za-z]+;)|(.*)");
List<Match> matchs = reg.allMatches(htmlStr);
var resStr = '';
matchs.forEach((m) {
var g1 = m.group(1);
var g2 = m.group(2);
var g3 = m.group(3);
g1 = HTML_ESCAPE.convert(g1 == null ? '' : g1);
g2 = g2 == null ? '' : g2;
g3 = HTML_ESCAPE.convert(g3 == null ? '' : g3);
resStr += g1 + g2 + g3;
});
print(resStr);
document.body.setInnerHtml(resStr);
}