Всем привет!
Вывожу текст в TextField с хэштегами и иконками. Иконки emoji конечно же не выводятся - они мне не нужны.
Задача: все хэштеги в тексте подсветить определенным цветом.

Код AS3:
var txt:TextField = new TextField();
txt.autoSize = TextFieldAutoSize.LEFT;
txt.text = "Любой текст с #хэштегами для #теста. Any text with #hashtags for the #test";
addChild(txt);
var fmt:TextFormat = new TextFormat();
fmt.color = 0x0033CC;
var arr:Array = getPosHashtags(txt.text);
for (var i in arr)
txt.setTextFormat(fmt, arr[i][0], arr[i][1]);
function getPosHashtags(str:String):Array
{
var arr:Array = [];
var pattern:RegExp = /#[\S]*/g;
var result:Object = pattern.exec(str);
while (result != null)
{
arr.push([result.index, result.index + result[0].length]);
result = pattern.exec(str);
}
return arr;
}
Проблема: если в тексте есть иконки emoji, то подсветка хэштегов съезжает...

Код AS3:
txt.text = "Любой текст с #хэштегами и котиками 🐈🐈 для #теста. Any text with #hashtags 😟 for the #test";
Как я догадываюсь, setTextFormat не учитывает скрытые символы в текстовом поле - из-за этого и происходит такой сдвиг...
В общем, решил я перед всем этим делом очищать текст от всех иконок...
Вот, например, хочу удалить из текста иконки с котом, которому соответствует unicode код u+1F408, но что-то никак не выходит...

Код AS3:
var str:String = "Тут иконки с котиками 🐈🐈 Попробуй-ка их удалить...";
trace("\t", s1); // с котами
var re:RegExp = new RegExp("([" + gen(0x1F408) + "])", "gi");
str = str.replace(re, "");
trace("\t", str); // ожидаю текст без котов, но увы..
function gen (obj:Object):String
{
return String.fromCharCode(obj);
}
Плз, помогите советом