#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 будет выводить символ со знаком вопроса, обозначающий осиротевший символ из суррогатной пары.
Комментариев нет:
Отправить комментарий