私はしばらくの間この問題に苦しんでいます:
HTMLを含む文字列があり、正規表現を使用してタグ間の文字を取得しています。次に、これらの文字にTextFormatを適用しようとしています。
問題は、「text」プロパティの代わりにTextFieldの「htmlText」プロパティを使用していることです(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タグが原因で、7文字が長すぎるためです<b></b>
。
これについて私は何ができますか?ありがとう!