Я некоторое время боролся с этой проблемой:
У меня есть строка, содержащая 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>
.
Что я могу с этим сделать?Спасибо!