我已经为这个问题苦苦挣扎了一段时间:
我有一个包含 HTML 的字符串,我正在使用正则表达式来获取标签之间的字符。然后,我尝试将 TextFormat 应用于这些字符。
问题是我使用的是 TextField 的“htmlText”属性而不是“text”属性(因为我不希望 HTML 标记可见)。因此,当我应用 TextFormat 时,从正则表达式返回的字符索引不正确。
这是一些说明问题的示例代码:
var txt:String = "<b>Sample</b> string with bold text";
var tf:TextField = new TextField();
addChild(tf);
tf.htmlText = txt;
var format:TextFormat = new TextFormat();
format.bold = true;
var regExp:RegExp = /<b>(.*?)<\/b>/g;
var match:Object = regExp.exec(txt);
while (match != null) {
tf.setTextFormat(format, match.index, match.index + match[0].length);
match = regExp.exec(txt);
}
这给了我:
"带有粗体文本的示例字符串"
而不是想要的:
"带有粗体文本的示例字符串"
因为match[0].length
是七个字符太长,由于 HTML 标签<b></b>
。
我能做些什么呢?谢谢!