Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Как можно увеличить значение символа в JS

#javascript #символы


Можно ли как, допустим, в C++ применить какие-то операции с символом, чтобы он шёл
дальше по алфавиту?

Например:

char sym = 'a';
sym++; // sym = 'b'
sym++; // sym = 'c'

    


Ответы

Ответ 1



function nextSymbol(a) { return String.fromCharCode(a.charCodeAt(0) + 1); } console.log(nextSymbol('a')); console.log(nextSymbol('г')); console.log(nextSymbol('Ц')); var a = 'а'; for (var i = 1; i <= 33; i++) { console.log(i, a); a = nextSymbol(a); } console.log(i, a);

Ответ 2



Варианты с charCode будут работать, только если ожидаются символы, вмещающиеся в два байта. Для поддержки всего Юникода (включая эмодзи и т.д.), нужно немного изменить. Разницу можно увидеть, если запустить этот код в консоли браузера или любом другом инструменте, отображающем эмодзи. Правильный код должен позволить перейти от эмодзи коня к эмодзи барашка. 'use strict'; function nextSymbolLegacy(a) { return String.fromCharCode(a.charCodeAt(0) + 1); } function nextSymbolNew(a) { return String.fromCodePoint(a.codePointAt(0) + 1); } const horse = '\u{1F40E}'; const ram = '\u{1F40F}'; console.log(horse); console.log(ram); console.log(nextSymbolLegacy(horse)); console.log(nextSymbolNew(horse)); Функция с charCode будет выводить символ со знаком вопроса, обозначающий осиротевший символ из суррогатной пары.

Комментариев нет:

Отправить комментарий