2015-12-26 2 views
0

Я пытаюсь подсчитать галочки в заданной строке. моя строка может быть:Javascript/dingbats: подсчет числа ✔ в строке

var myString = "one ✔ two ✔ three ✔"

Я попытался с помощью myString.match(/✔/g) || []).length;, но это возвращение 0 (я считаю, что происходит из-за ✔ символ дингбата).

Я знаю, что юникод для «✔» равен 2714, могу ли я использовать это в своем выражении?

+1

То, что вы здесь предоставили, похоже, отлично работает - https://jsfiddle.net/06o1vnu9/. Я бы проверял кодировки файлов для ваших скриптов, чтобы они совпадали. В противном случае код символа, используемый для сохранения '✔', может не совпадать между ними. –

+0

@JonathanLonowski благодарит за то, что вместе. вы, вероятно, прав насчет кодировок, но, к счастью, я нашел более безопасное решение (ответил на мой собственный вопрос) –

ответ

2

я решил мою проблему: Я использовал «юникода последовательность» \u с 2714 Юникода:

.match(/\u2714/g) || []).length;

Проблема была вероятно, из-за проблемы с кодировкой символов (см. комментарии к моему вопросу), но это решение кажется безопасным выбором.

1

Нет проблем с выполнением строкового соответствия с помощью unicode. Метод match возвращает массив согласованных элементов. Чтобы подсчитать общее количество, вам необходимо общее количество элементов в этом массиве. Я считаю, что код, который вы ищете:

myString.match(/✔/g).length 
+1

Примечание: '.match()' будет возвращать 'null', если совпадений не найдено. '|| [] 'состоит в том, чтобы гарантировать, что массив всегда задан, поскольку вы не можете прочитать' .length' 'null'. –