Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сбиваются индексы из-за иконок Emoji (http://www.flasher.ru/forum/showthread.php?t=215064)

caseyryan 09.02.2018 19:43

Цитата:

Но регулярка почему-то засчитывает эту комбинацию как один символ.
Потому что обратный слеш восприниматся регуляркой как экранирование и он попросту выпадает. Чтобы слеш был слешем, его надо тоже экранировать другим слешем) Вот такая тавтология)
То есть вот так:
Код AS3:

var regExp:RegExp = /\\/ ;

Регулярка будет соответствовать слешу

djken 09.02.2018 21:54

caseyryan, так у меня в регулярке и нет обратных слешей. Ищу все хэштеги в тексте, в котором есть еще емодзи )
Код AS3:

var pattern:RegExp = /#[\S]*/g;

Проблема в том, что регулярка считает эмодзи за 1 символ, хотя в тексте каждый состоит из двух символов unicode - суррогатная пара. В итоге при проходе в цикле неправильно возвращается index начала каждого хэштега в тексте. Но если использовать методы класса String - индексы символов возвращаются верно...

caseyryan 10.02.2018 20:04

Цитата:

caseyryan, так у меня в регулярке и нет обратных слешей. Ищу все хэштеги в тексте, в котором есть еще емодзи )
Всё верно, я об этом и говорю. Обратный слеш не в регулярке, а в эмодзи, а регулярка его не видит, потому что считает экраном

djken 12.02.2018 04:10

caseyryan, я понимаю, что слэш нужно экранировать для его поиска... Но в моем-то случае это зачем?... Как мне нужно регулярку поправить? Что-то совсем не пойму..
И эти слэши в юникоде, как я понимаю, даже не доходят до регулярки - юникодовый текст преобразовывается в символы и смайлы до попадения в регулярку.
Вот, например, в юникоде слово 'Отметь'
Код AS3:

var str:String = "\u041e\u0442\u043c\u0435\u0442\u044c";

С помощью регулярки нахожу и окрашиваю подстроку 'мет':
Код AS3:

var pattern:RegExp = /(мет)/g;

Слэши не мешают никак. Регулярка справляется со своей задачей.


Часовой пояс GMT +4, время: 17:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.