[ID CC-CC2022] split и юникодовский разделитель

  • Автор темы Автор темы _MBK_
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 703
Реакции
11 005
Столкнулся со странной проблемой. Есть строка, содержащая тире (юникодный символ \u8208) При попытке разбить ее на части words=a.split("\u8208") ничего не происходит. Это принципиальная проблема или я где то туплю? 'hmmm'
 
Гм, когда напрямую задаешь, и вправду работает.
Зато, когда в тексте встречается слова, имеющие в составе тире (GID=882) с кодом \u8208 парсить не хочет 'hz'
 
Мистика! У меня indexOf работает, а split - нет. Выкрутился, конечно, посимвольно разбирая слово, но как то уныло все это :(
 
Покажи кусок кода, где получаешь контент как строку.
 
Код взят целиком из индизайновского примера
Код:
var myArray = app.selection[0].paragraphs.everyItem().contents
Я уже думал, может, символ не тот, но нет, charCodeAt возвращает 8208
На других разделителях (не юникодных) split с той же строкой работает нормально
 
Добавь .toString() и будет тебе счастье.
 
  • Спасибо
Реакции: _MBK_
Попробую как до 2015 доберусь
Но какая разница? Почему с неюникодными символами работает, а с юникодными нет? 'hmmm'
 
А у тебя на CS6 если toString убрать, работает или нет?
В простом случае -- работает. Но гарантий тут никаких, в разных комбинациях может и не сработать. Я как-то попадался на эту багофичу, с тех пор привык контент получать через принудительную конвертацию в строку.
 
  • Спасибо
Реакции: Flame
В простом случае -- работает. Но гарантий тут никаких, в разных комбинациях может и не сработать. Я как-то попадался на эту багофичу, с тех пор привык контент получать через принудительную конвертацию в строку.
Гм, интересно, попробую и первым и вторым способом, жалко, что по определенным обстоятельствам я до CC2015 доберусь не раньше понедельника 'hz'
 
charCodeAt вам в десятичном представлении возвращает, а для \u надо шестнадцатиричное
А хифен 8208 это \u2010
 
  • Спасибо
Реакции: _MBK_
charCodeAt вам в десятичном представлении возвращает, а для \u надо шестнадцатиричное
А хифен 8208 это \u2010
Как всегда, правильное решение - самое банальное. Как ни смешно, но дело было именно в этом! 'otbline'
 
Статус
Закрыто для дальнейших ответов.