Далее на странице...
Рассмотрим работу двух методов объекта String - это методы charAt и charCodeAt.
Первый позволяет узнать, какой символ содержит строка под определенным индексом.
Второй позволяет узнать, какой код имеет символ строки под определенным индексом.
Метод charAt - Возвращаем символ строки
Метод charAt возвращает символ строки по указанному индексу.
Напомним: каждый элемент (символ) строки имеет порядковый номер - индекс. При этом отсчет ведется с 0.
Рассмотрим пример с произвольным строковым значением переменной (или с произвольным объектом String).
<script type="text/javascript">
var name = "Воронеж";
document.write(name.charAt(2)); /* Выводим на экран символ строки под индексом 2 */
</script>
Итак, в этом примере мы вывели на экран 3-й символ строки - букву «р», имеющую индекс 2 (отсчет символов ведется с 0).
Метод charCodeAt - Возвращаем КОД символа строки
Метод charCodeAt возвращает код символа строки по указанному индексу.
В JavaScript каждый символ имеет код, который может быть использован в некоторых случаях. Далее мы проработаем этот момент.
А сейчас вернемся к предыдущему примеру и посмотрим, как работает метод charCodeAt.
<script type="text/javascript">
var name = "Воронеж";
document.write(name.charCodeAt (2)); /* Выводим на экран КОД символа строки под индексом 2 */
</script>
При помощи метода charCodeAt мы вывели на экран код 3-го символа строки (имеющего индекс 2), то есть код буквы «р» - это число «1088».
Юникод U+ и HTML-код символов - Коды букв русского алфавита
Наверное, некоторым из Вас не ясно, о каком коде шла речь, когда мы рассматривали метод charCodeAt?
Любой символ: знаки препинания, заглавные и строчные русские и латинские буквы и т.д. - все они имеют свой код в кодировке Unicode, а также HTML-код.
Для примера вернемся к букве «р» из предыдущего примера.
Она имеет Юникод U+0440 и HTML-код р
Так вот JavaScript в результате работы метода charCodeAt, выдает нам именно цифровую часть HTML-кода указанного символа.
Теперь, при помощи метода charCodeAt выясним, какие коды имеют русские заглавные и строчные буквы?
<script type="text/javascript">
var letter_UP = "АЯ";
var letter_DOWN = "ая";
var first_letter_UP = letter_UP.charCodeAt(0); /* Заносим в переменную код заглавной буквы А */
var last_letter_UP = letter_UP.charCodeAt(1); /* Заносим в переменную код заглавной буквы Я */
document.write("Русские ЗАГЛАВНЫЕ буквы имеет код, начиная с " + first_letter_UP + " и заканчивая " + last_letter_UP);
document.write("<p>");
var first_letter_DOWN = letter_DOWN.charCodeAt(0); /* Заносим в переменную код буквы а */
var last_letter_DOWN = letter_DOWN.charCodeAt(1); /* Заносим в переменную код буквы я */
document.write("Русские строчные буквы имеет код, начиная с " + first_letter_DOWN + " и заканчивая " + last_letter_DOWN);
document.write("<p>");
document.write("Таким образом, коды ВСЕХ русских букв находятся в диапазоне от <strong> " + first_letter_UP + " </strong> и до <strong> " + last_letter_DOWN + " </strong> ВКЛЮЧИТЕЛЬНО");
</script>
Методы charAt и charCodeAt - Рассмотрим реальный пример
Рассмотрим реальный пример использования методов charAt и charCodeAt. Необходимо написать код, который будет делать следующее:
1. Нужно попросить у пользователя ввести Имя русскими буквами (любыми - строчными или заглавными).
2. При этом проверить, нет ли в имени помимо русских букв других символов.
3. Затем при написании имени, нужно будет пробовать вводить одну/несколько латинских букв вместо русских.
Для решения этой задачи нужно будет вспомнить тему циклов и просмотреть заметку логические операторы И и ИЛИ в Javascript. Также нужен будет метод prompt объекта Window.
Для составления условия нужен будет диапазон кодов для всех букв русского алфавита (заглавных и строчных). См. предыдущий пример.
<script type="text/javascript">
var name = "АнтоQ"; /* Делаем намеренно в Имени ошибку - это буква Q */
document.write("Вы ввели имя <strong> , " + name + " </strong> <p>");
/* Составляем цикл */
var i = 0; /* Создаём переменную i - это счётчик. i = 0, так как 0 - это индекс первой буквы имени */
while (i < name.length) /* Условие - пока i меньше длины имени */
/* Выполняем действие */
{
if(name.charCodeAt(i) < 1040 || name.charCodeAt(i) > 1103) /* Если КОД текущего символа в имени не попадает в диапазон кодов для букв русского алфавита, то выводим об этом сообщение... */
{
document.write("В имени присутствует недопустимый символ <strong>" + name.charAt(i) + "</strong>. Используйте только русские буквы!<p>"); /* Выводим недопустимый символ */
}
i++; /* Прибавляем к счетчику единицу */
}
</script>
Итак, в этом примере при помощи цикла while, условия ИЛИ и метода charCodeAt мы поочереди проверили каждую букву в имени на предмет попадания ее КОДа в диапазон кодов для всех букв русского алфавита.
А при помощи метода charAt - вывели на экран недопустимый символ.
Эту же задачу можно реализовать при помощи цикла for. Смотрите пример ниже.
<script type="text/javascript">
var name = "АнтоQ";
document.write("Вы ввели имя <strong> , " + name + " </strong> <p>");
for (var i = 0; i < name.length; i++) /* Используем цикл for */
if(name.charCodeAt(i) < 1040 || name.charCodeAt(i) > 1103)
{
document.write("В имени присутствует недопустимый символ <strong>" + name.charAt(i) + "</strong>. Используйте только русские буквы!<p>");
}
</script>
И, наконец, добавим метод prompt. Попробуйте в результате самостоятельно ввести любое имя, добавив в него несколько латинских букв.
<script type="text/javascript">
var name = prompt("Введите Ваше имя"); /* Создаем поле для ввода Имени */
document.write("Вы ввели имя <strong> , " + name + " </strong> <p>");
for (var i = 0; i < name.length; i++)
if(name.charCodeAt(i) < 1040 || name.charCodeAt(i) > 1103)
{
document.write("В имени присутствует недопустимый символ <strong>" + name.charAt(i) + "</strong>. Используйте только русские буквы!<p>");
}
</script>