Как удалить символы пробела нулевой ширины ‍ из текста - PullRequest
0 голосов
/ 01 июня 2018

У меня есть текст, который содержит ‍ Столяр с нулевой шириной , который не отображается в пользовательском интерфейсе, но когда я отправил его в виде смс, он показывает как вопросительный знак ? в iPhone.

Я пытался удалить его с помощью gsub, но он не удаляется.

text.gsub("&zwj\;", "")

Есть ли кто-нибудь, чтобы удалить такой невидимый символ из текста?


Обновление:

В дополнение к ответу @ matt

Юникод имеет следующие символы нулевой ширины:

  • U + 200B пробел нулевой ширины
  • U + 200C нулевой ширины, не соединяющий код Unicode, кодовая точка
  • U + 200D нулевой ширины, Unicode, кодовая точка
  • U + FEFF нулевая ширина, интервал без кода Unicode, кодовая точка

Чтобы заменить их в тексте, вы можете использовать простое регулярное выражение:

text = text.gsub(/[\u200B-\u200D\uFEFF]/, '')

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Строка ‍ - это символьная сущность HTML для соединения с нулевой шириной.Когда веб-браузер увидит его, он заменит его фактическим соединителем нулевой ширины, но для Ruby это всего лишь строка из 5 символов.

Вам нужно указать фактический символ присоединения нулевой ширины.У него есть кодовая точка U + 200D, так что вы можете использовать его следующим образом, используя экранирование Unicode в Ruby:

text.gsub("\u200D", "")

Это должно удалить символы присоединения нулевой ширины, а не искать строку ‍, котораяваш исходный код делал.

0 голосов
/ 01 июня 2018
"blah blah blah".gsub(/[^[:print:]]/, '')

Следует удалить все непечатаемые символы.

...