Страницы

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

пятница, 13 декабря 2019 г.

Как определить регистр символа

#javascript


Здравствуйте! Подскажите, как определить регистр символа. Именно определить, а не
изменить. Есть ли какая-нибудь функция? Самый простой метод в лоб - это два массива
с верхний и нижним регистром, после проверка на вхождение. Есть ли путь проще?     


Ответы

Ответ 1



Например, так можно: var symbol = 's'; var isUpperCase = symbol.toUpperCase()==symbol; alert(!!isUpperCase); // true - верхний регистр, false - нижний

Ответ 2



На ум пришло 2 идеи: Сравнивать диапазон ASCII кодов символов, если входит в диапазон - значит верхний регистр, иначе нижний. Сложность в том, что тут придется учитывать разные кодировки, или приводить символ\текст к нужной. Воспользоваться функцие приводящей к верхнему\нижнему регистру. Пример допустимый для PHP: function isUpper($str) { if ($str === strtoupper($str)) return true; else return false; } В JS у строки есть метод - toUpperCase().

Ответ 3



На днях столкнулся с такой же задачей. Предлагаю свою идею. В ходе написание скрипта были учтены непереводимые в регистр символы, цифры, пробел. При определении ввода верхнего регистра проверяю последний введенный символ. Ну в общем чего ходить вокруг да около вот функция которая принимает объект и уже на типу объекта берет значение для проверки. /** * return boolean * true - using Caps Lock * false - not using Caps Lock **/ function checkingUp(_obj){ var symbol = ''; var type = _obj[0].tagName; switch(type) { case "INPUT" : symbol = String(_obj.val()); break; } if(symbol == ''){ return false; } symbol = symbol.substr(symbol.length - 1, (symbol.length)); if($.isNumeric(symbol)){ return false; } var newSymbol = symbol.toLowerCase(); if(symbol != newSymbol){ return true; } return false; } Функция принимает String значение для проверки. /** * return boolean * true - using Caps Lock * false - not using Caps Lock **/ function checkingUp(_obj){ var symbol = _obj; if(symbol == ''){ return false; } symbol = symbol.substr(symbol.length - 1, (symbol.length)); if($.isNumeric(symbol)){ return false; } var newSymbol = symbol.toLowerCase(); if(symbol != newSymbol){ return true; } return false; } Функция может быть использована для проверки вводимого значения в поле Password, примерный код проверки с использованием вышеизложенной функции прилаживая ниже . . . $("#login-form input[type=password]").each(function(){ // после поля ввода пароля расположен span с логотипом капчи, скрытый стилями css var iconCapsLock = $(this).parent().find('.capslock'); $(this).bind('keyup', function(){ if(checkingUp($(this))){ iconCapsLock.show(); } else{ iconCapsLock.hide(); } }); $(this).bind('blur', function(){ iconCapsLock.hide(); }); }); И под конец пример HTML верстки с полем для проверки
Надеюсь, что мой совет поможет нуждающимся ))

Ответ 4



Вот решение: function strUpAndDown(str){ var newStr = ''; for(var i =0; i < str.length;i++){ if(str[i].toLowerCase() === str[i]){ newStr += str[i].toUpperCase(); }else { newStr += str[i].toLowerCase(); } } return newStr; }

Ответ 5



function whatCase(ch) { var u = ch.toUpperCase(), l = ch.toLowerCase() return u !== l ? ch === u ? 'upper' : 'lower' : 'not-a-letter' } document.addEventListener('input', function (e) { document.querySelector("output").innerHTML = e.target.value.split("").map(function (ch) { return "" + ch + "" }).join("") }) .upper { color: blue; } .lower { color: green; } .not-a-letter { color: red; } input, output { display: block; width: 100%; box-sizing: border-box; }

Ответ 6



Как вам такой вариант? checked_val.charAt(0).matches("A-Z"); //Верх. регистр checked_val.charAt(0).matches("a-z"); //Нижн. регистр Если "для английских не прокатит" if (targetId.charAt(0).toUpperCase() == targetId.charAt(0)) { ... } else { ... }

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

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