Charat js что это
Перейти к содержимому

Charat js что это

  • автор:

charAt()

Метод charAt () возвращает символ по указанному индексу в строке.
Индекс первого символа — 0, индек второго — 1 и т. д.
Совет. Индекс последнего символа в строке — string.length-1, предпоследнего — string.length-2 и т.д.
См. в “Дополнительные примеры”.

Поддержка браузеров

Синтаксис

Значения параметров

Параметр Описание
index Обязательный. Целое число, представляющее индекс символа, который вы хотите вернуть

Технические подробности

Возвращаемое значение: Строка, представляющая символ в указанном индексе, или пустую строку, если номер индекса не найден
Версия JavaScript: ECMAScript 1

Дополнительные примеры

Вернет последний символ строки:

var string = "HELLO WORLD"; var result = string.charAt(string.length-1);

Результатом result будет:

charAt

Символы идут слева направо. Первый символ имеет позицию 0, а последний string.length-1 .

Если указанный index лежит за пределами этого диапазона, яваскрипт вернет пустую строку.

Пример: перечисление символов в строке

var anyString="Привет, мир" document.writeln("Символ на позиции 0 '" + anyString.charAt(0) + "'") document.writeln("Символ на позиции 1 '" + anyString.charAt(1) + "'") document.writeln("Символ на позиции 2 '" + anyString.charAt(2) + "'") document.writeln("Символ на позиции 3 '" + anyString.charAt(3) + "'") document.writeln("Символ на позиции 4 '" + anyString.charAt(4) + "'") document.writeln("Символ на позиции 999 '" + anyString.charAt(999) + "'")
Символ на позиции 0 'П' Символ на позиции 1 'р' Символ на позиции 2 'и' Символ на позиции 3 'в' Символ на позиции 4 'е' Символ на позиции 999 ''

Автор: ixth, дата: 17 февраля, 2010 — 23:52

Вместо charAt можно обращаться к символам, как к элементам массива. В литературе пишут, что это не стандартизировано, а кое-где, что не поддерживается некоторыми браузерами. Для каких браузеров это актуально?

Автор: B@rmaley.e>Не работает в IE6, в других не проверял.

Автор: Гость (не зарегистрирован), дата: 21 февраля, 2010 — 22:17

где же само описание функции?

Автор: vahrusha, дата: 17 августа, 2010 — 18:44

Обращение к символам, как к элементам массива не поддерживается Internet Explorer до 7-ой версии. IE8 без заданного доктайпа также не поддерживает. Проверено, что если указать доктайп xhtml 1.0 strict, то метод работает в IE8. Работу с другими доктайпами не проверял.

Автор: Гость (не зарегистрирован), дата: 3 ноября, 2010 — 11:43

А если текст представляет из себя несколько строк, как задать нужный символ не из первой строки.

Автор: Гость (не зарегистрирован), дата: 4 марта, 2011 — 14:57

разбить текст на строки и из нужной строки вытащить символ:

var chr = text.split("\n")[line].charAt(index);

Автор: Гость (не зарегистрирован), дата: 17 марта, 2013 — 19:45

есть строка «11223344», я хочу заменить в ней третий символ на 5, как это сделать?

Автор: Гость (не зарегистрирован), дата: 19 марта, 2013 — 03:35

Насколько я знаю, после создания строки её уже не изменить, поэтому придется переписывать первые два символа в новую строку, затем вместо третьего добавлять к новой строке 5, а уже после переписывать оставшуюся часть строки.

Автор: Гость (не зарегистрирован), дата: 11 июня, 2013 — 11:14

как из строки «телефона» 89876544321 сделать 8 987 654-43-21 ?

Автор: Гость (не зарегистрирован), дата: 12 марта, 2015 — 11:25

var formatPhoneNumber = function(str) < var res = ''; str += ''; for (var i=0;ielse if (6 === i || 8 === i) < res += str.charAt(i) + '-'; >else < res += str[i]; >> return res; >

Автор: Гость (не зарегистрирован), дата: 7 августа, 2013 — 16:21

А как извлечь 1 символ после пробела? Для формирования кратких инициалов. Подскажите пример

Автор: Гость (не зарегистрирован), дата: 15 мая, 2014 — 06:48

м-да.
поначалу вроде обрадовался — классный ресурс, много написано, куча примеров.
Но всё больше и больше разочаровываюсь в этом ресурсе.
Многие статьи датированы 2009 годом и с тех пор не обновлялись, но ведь технологии не стоят на месте, развиваются.
Автору сайта конечно большой респект за огромнейшие труды, потраченные на создание сего творения. Но взялся за гуж — не говори, что не дюж. Поддерживать надо всё оперативно в актуальном состоянии.
В частности, строковые типы вообще практически не описаны. А ведь там очень много методов!

Автор: Гость (не зарегистрирован), дата: 11 июля, 2014 — 13:49

Это кстати типично только для рунета — зайти на ресурс, сказать «автор конечно молодец, но..» и обосрать. Что-то на генетическом уровне, наверное.

Автор: Гость (не зарегистрирован), дата: 11 июля, 2014 — 13:51

А вы, уважаемый гость, готовы платить автору ресурса за поддержание информации в актуальном состоянии, или «за просто так» хочется? Это ведь труд, поговорки ваши на хлеб не намажешь.

Автор: Илья Кантор, дата: 16 июля, 2014 — 10:18

Уверяю вас, с 2009 года работа метода charAt никак не изменилась!

Что же касается других строковых методов — они тоже есть.

Автор: Гость (не зарегистрирован), дата: 30 июня, 2015 — 18:09

подскажите пожалуйста: есть строка длинной 60 символов, но мне нужно отобразить первые 40, остальные скрыть, просто что бы не было их видно. Как это реализовать?

Автор: Mips, дата: 6 сентября, 2015 — 18:37

присвоить другой переменной и урезать до 40 символов
var stroka_40_bukv = stroka_60_bukv.substr(0,40);

Автор: osdal (не зарегистрирован), дата: 3 марта, 2016 — 10:26

А метод, описанный в книге Монкура CharA уже не работает?

Автор: Гость (не зарегистрирован), дата: 13 апреля, 2022 — 07:11
Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 — 14:13

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

  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
Поиск по сайту
Содержание

Учебник javascript

  • Введение
  • Основы javascript
  • DOM: работа с HTML-страницей
  • События
  • Объекты, ООП
  • AJAX
  • Особенности регулярных выражений в Javascript

Основные элементы языка

  • Базовые типы: Строки, Числа, Boolean
  • Операторы, их особенности в JS
  • Массивы
  • Функции
  • Замыкания
  • Регулярные выражения
  • Конструкции языка. Обработка ошибок.

Сундучок с инструментами

  • Редактирование и отладка скриптов
  • Cookie
  • HTTP-Отладка
  • Просмотр живого HTML
  • Разное полезное

Интерфейсы

  • Drag and drop
  • Грамотное javascript-дерево за 7 шагов
  • Интеграция AJAX в интерфейс
  • Координаты элемента на странице
  • Правильные show/hide/toggle
  • Удобное дерево с AJAX-подгрузкой

Все об AJAX

  • Введение в Ajax
  • Ajax и Rich Client
  • Ajax и клиент-серверная архитектура.
  • Способы общения с сервером
  • COMET
  • Форматы данных для AJAX
  • Обмен данными для документов с разных доменов
  • Обмен данными между доменами. Часть 2.

Оптимизация

  • Google Closure Compiler в деталях
  • Yahoo: лучшие способы ускорения сайта
  • Анализ оптимизации страниц c Yslow
  • Интерфейсы. Прочь от MVC
  • Оптимизация Javascript-кода
  • Польза от documentFragment
  • Сжатие Javascript и CSS
  • Улучшаем сжимаемость Javascript-кода.
  • Умное Кеширование и Версионность в Javascript/CSS

Разное

  • Асинхронное программирование
  • Google Gears в деталях
  • Javascript Flash мост
  • Букмарклеты и правила их написания
  • О подборке книг на сайте
  • Почему — плохо
  • Способы идентификации в интернете
  • Уровни DOM
  • Что почитать?
  • Шаблонизация с javascript
  • Юнит-тесты уровня браузера на связке Selenium + PHP.
  • Справочники: Javascript/HTML/CSS
  • Система сборки и зависимостей Google Closure Library
  • Хранение данных на клиенте. DOM Storage и его аналоги.
  • 10 лучших функций на JavaScript
  • Thanks for sharing. You can now.
    7 часов 27 минут назад
  • You can download and install the latest.
    7 часов 29 минут назад
  • Thanks for your personal marvelous.
    7 часов 43 минуты назад
  • I like the helpful information you.
    7 часов 50 минут назад
  • Thanks for your personal marvelous.
    7 часов 59 минут назад
  • I just want to mention I am very new to.
    8 часов 57 минут назад
  • Thanks for your personal marvelous.
    9 часов 28 минут назад
  • if you are wondering from where should.
    9 часов 37 минут назад
  • Thanks for your personal marvelous.
    9 часов 50 минут назад
  • Thanks for your personal marvelous.
    9 часов 59 минут назад
  • строка содержит html код
  • Сравнить два массива
  • 3-х мерная матрица
  • Вызов Autocomplete по значению в input
  • Фильтр массива
  • Валидация скобок
  • Запуск программ на NW.js

Методы charAt и charCodeAt — Возвращаем символ и КОД символа

Рассмотрим работу двух методов объекта String — это методы charAt и charCodeAt .

Первый позволяет узнать, какой символ содержит строка под определенным индексом.

Второй позволяет узнать, какой код имеет символ строки под определенным индексом.

Метод charAt — Возвращаем символ строки

Метод charAt возвращает символ строки по указанному индексу .

Напомним : каждый элемент (символ) строки имеет порядковый номер — индекс. При этом отсчет ведется с 0 .

Рассмотрим пример с произвольным строковым значением переменной (или с произвольным объектом String ).

Фрагмент кода

var name = «Воронеж» ;

document. write ( name . charAt ( 2 )); /* Выводим на экран символ строки под индексом 2 */

Итак, в этом примере мы вывели на экран 3-й символ строки — букву «р» , имеющую индекс 2 (отсчет символов ведется с 0 ).

Метод charCodeAt — Возвращаем КОД символа строки

Метод charCodeAt возвращает код символа строки по указанному индексу .

В JavaScript каждый символ имеет код, который может быть использован в некоторых случаях. Далее мы проработаем этот момент.

А сейчас вернемся к предыдущему примеру и посмотрим, как работает метод charCodeAt .

Фрагмент кода

var name = «Воронеж» ;

document. write ( name . charCodeAt ( 2 )); /* Выводим на экран КОД символа строки под индексом 2 */

При помощи метода charCodeAt мы вывели на экран код 3-го символа строки (имеющего индекс 2 ), то есть код буквы «р» — это число «1088» .

Юникод U+ и HTML-код символов — Коды букв русского алфавита

Наверное, некоторым из Вас не ясно, о каком коде шла речь , когда мы рассматривали метод charCodeAt ?

Любой символ : знаки препинания, заглавные и строчные русские и латинские буквы и т.д. — все они имеют свой код в кодировке Unicode , а также HTML-код .

Для примера вернемся к букве «р» из предыдущего примера.

Она имеет Юникод U+0440 и HTML-код &#1088;

Так вот JavaScript в результате работы метода charCodeAt , выдает нам именно цифровую часть HTML-кода указанного символа.

Теперь, при помощи метода charCodeAt выясним, какие коды имеют русские заглавные и строчные буквы?

Фрагмент кода

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 );

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 ( «Таким образом, коды ВСЕХ русских букв находятся в диапазоне от » + first_letter_UP + « и до » + last_letter_DOWN + « ВКЛЮЧИТЕЛЬНО» );

Методы charAt и charCodeAt — Рассмотрим реальный пример

Рассмотрим реальный пример использования методов charAt и charCodeAt . Необходимо написать код, который будет делать следующее:

1. Нужно попросить у пользователя ввести Имя русскими буквами (любыми — строчными или заглавными).

2. При этом проверить, нет ли в имени помимо русских букв других символов.

3. Затем при написании имени, нужно будет пробовать вводить одну/несколько латинских букв вместо русских.

Для решения этой задачи нужно будет вспомнить тему циклов и просмотреть заметку логические операторы И и ИЛИ в Javascript. Также нужен будет метод prompt объекта Window.

Для составления условия нужен будет диапазон кодов для всех букв русского алфавита (заглавных и строчных). См. предыдущий пример.

Фрагмент кода

var name = «АнтоQ» ; /* Делаем намеренно в Имени ошибку — это буква Q */

document. write ( «Вы ввели имя , » + name + «

» );

var i = 0 ; /* Создаём переменную i — это счётчик. i = 0, так как 0 — это индекс первой буквы имени */

if( name . charCodeAt ( i ) < 1040 || name . charCodeAt ( i ) >1103 ) /* Если КОД текущего символа в имени не попадает в диапазон кодов для букв русского алфавита, то выводим об этом сообщение. */

document. write ( «В имени присутствует недопустимый символ » + name . charAt ( i ) + «. Используйте только русские буквы!

» ); /* Выводим недопустимый символ */
>

i ++ ; /* Прибавляем к счетчику единицу */

Итак, в этом примере при помощи цикла while, условия ИЛИ и метода charCodeAt мы поочереди проверили каждую букву в имени на предмет попадания ее КОДа в диапазон кодов для всех букв русского алфавита.

А при помощи метода charAt — вывели на экран недопустимый символ.

Эту же задачу можно реализовать при помощи цикла for. Смотрите пример ниже.

Фрагмент кода

var name = «АнтоQ» ;

document. write ( «Вы ввели имя , » + name + «

» );

document. write ( «В имени присутствует недопустимый символ » + name . charAt ( i ) + «. Используйте только русские буквы!

» );
>

И, наконец, добавим метод prompt. Попробуйте в результате самостоятельно ввести любое имя, добавив в него несколько латинских букв.

Фрагмент кода

var name = prompt ( «Введите Ваше имя» ); /* Создаем поле для ввода Имени */

document. write ( «Вы ввели имя , » + name + «

» );

document. write ( «В имени присутствует недопустимый символ » + name . charAt ( i ) + «. Используйте только русские буквы!

» );
>

String.prototype.charAt()

Метод charAt() возвращает указанный символ из строки.

Синтаксис

str.charAt(index)

Параметры

Целое число от 0 до длины строки минус 1.

Описание

Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке stringName равен stringName.length — 1 . Если предоставленный вами параметр index выходит за пределы этого диапазона, JavaScript вернёт пустую строку.

Примеры

Пример: отображение символов из различных позиций строки

Следующий пример показывает символы в различных позициях в строке «Дивный новый мир» :

var anyString = "Дивный новый мир"; console.log("Символ по индексу 0 равен '" + anyString.charAt(0) + "'"); console.log("Символ по индексу 1 равен '" + anyString.charAt(1) + "'"); console.log("Символ по индексу 2 равен '" + anyString.charAt(2) + "'"); console.log("Символ по индексу 3 равен '" + anyString.charAt(3) + "'"); console.log("Символ по индексу 4 равен '" + anyString.charAt(4) + "'"); console.log("Символ по индексу 5 равен '" + anyString.charAt(5) + "'"); console.log("Символ по индексу 999 равен '" + anyString.charAt(999) + "'"); 

Этот код отобразит следующее:

0 равен 'Д' Символ по индексу 1 равен 'и' Символ по индексу 2 равен 'в' Символ по индексу 3 равен 'н' Символ по индексу 4 равен 'ы' Символ по индексу 5 равен 'й' Символ по индексу 999 равен '' 

Пример: получение целых символов

Следующий пример показывает, как обойти строку в цикле, каждый раз гарантированно получая целый символ, даже если строка содержит символы, не помещающиеся на Базовую многоязыковую плоскость (БМП).

var str = "A \uD87E\uDC04 Z"; // Также можно использовать не-БМП символы напрямую for (var i = 0, chr; i  str.length; i++)  if ((chr = getWholeChar(str, i)) === false)  continue; > // Поместите эти строки в самое начало каждого цикла, передавая в функцию строку // и текущую итерацию; возвращаемая переменная будут представлять // отдельный символ console.log(chr); > function getWholeChar(str, i)  var code = str.charCodeAt(i); if (isNaN(code))  return ""; // Позиция не найдена > if (code  0xd800 || code > 0xdfff)  return str.charAt(i); > // Старшая часть суррогатной пары (последнее число можно изменить на 0xDB7F, // чтобы трактовать старшую часть суррогатной пары в частной плоскости как // одиночный символ) if (0xd800  code && code  0xdbff)  if (str.length  i + 1)  throw "Старшая часть суррогатной пары без следующей младшей"; > var next = str.charCodeAt(i + 1); if (0xdc00 > next || next > 0xdfff)  throw "Старшая часть суррогатной пары без следующей младшей"; > return str.charAt(i) + str.charAt(i + 1); > // Младшая часть суррогатной пары (0xDC00 if (i === 0)  throw "Младшая часть суррогатной пары без предшествующей старшей"; > var prev = str.charCodeAt(i - 1); // (последнее число можно изменить на 0xDB7F, чтобы трактовать старшую // часть суррогатной пары в частной плоскости как одиночный символ) if (0xd800 > prev || prev > 0xdbff)  throw "Младшая часть суррогатной пары без предшествующей старшей"; > // Теперь мы можем пропустить младшую часть суррогатной пары, // которую мы уже обработали return false; > 

В среде, поддерживающей JavaScript 1.7+ (например, в Firefox), который позволяет деструктурирующее присваивание, можно использовать более лаконичную и более гибкую альтернативу в том смысле, что она автоматически увеличивает счётчик (если символ гарантированно является суррогатной парой).

var str = "A\uD87E\uDC04Z"; // Также можно использовать не-БМП символы напрямую for (var i = 0, chr; i  str.length; i++)  [chr, i] = getWholeCharAndI(str, i); // Поместите эту строку в самое начало каждого цикла, передавая в функцию строку // и текущую итерацию; возвращаемый массив будет содержать отдельный символ и // новое значение счётчика цикла 'i' (изменится только при встрече суррогатной пары) console.log(chr); > function getWholeCharAndI(str, i)  var code = str.charCodeAt(i); if (isNaN(code))  return ""; // Позиция не найдена > if (code  0xd800 || code > 0xdfff)  return [str.charAt(i), i]; // Обычный символ, оставляем переменную 'i' неизменной > // Старшая часть суррогатной пары (последнее число можно изменить на 0xDB7F, // чтобы трактовать старшую часть суррогатной пары в частной плоскости как // одиночный символ) if (0xd800  code && code  0xdbff)  if (str.length  i + 1)  throw "Старшая часть суррогатной пары без следующей младшей"; > var next = str.charCodeAt(i + 1); if (0xdc00 > next || next > 0xdfff)  throw "Старшая часть суррогатной пары без следующей младшей"; > return [str.charAt(i) + str.charAt(i + 1), i + 1]; > // Младшая часть суррогатной пары (0xDC00 if (i === 0)  throw "Младшая часть суррогатной пары без предшествующей старшей"; > var prev = str.charCodeAt(i - 1); // (последнее число можно изменить на 0xDB7F, чтобы трактовать старшую // часть суррогатной пары в частной плоскости как одиночный символ) if (0xd800 > prev || prev > 0xdbff)  throw "Младшая часть суррогатной пары без предшествующей старшей"; > // Возвращаем следующий символ (и увеличиваем счётчик) return [str.charAt(i + 1), i + 1]; > 

Пример: добавление к методу charAt() поддержки символов не в Базовой многоязыковой плоскости (БМП)

В то время как пример выше может быть более полезен тем, кто хочет поддерживать символы не в плоскости БМП (поскольку он не требует от вызывающей стороны знания о том, где может встретиться символ из не-БМП), в случае, если кто-то желает выбирать символы по индексу и трактовать суррогатную пару внутри строки как один символ, он может использовать следующий код:

function fixedCharAt(str, idx)  var ret = ""; str += ""; var end = str.length; var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; while (surrogatePairs.exec(str) != null)  var li = surrogatePairs.lastIndex; if (li - 2  idx)  idx++; > else  break; > > if (idx >= end || idx  0)  return ""; > ret += str.charAt(idx); if ( /[\uD800-\uDBFF]/.test(ret) && /[\uDC00-\uDFFF]/.test(str.charAt(idx + 1)) )  // Перешагиваем через один, поскольку один «символ» является частью суррогатной пары ret += str.charAt(idx + 1); > return ret; > 

Спецификации

Specification
ECMAScript Language Specification
# sec-string.prototype.charat

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также

  • String.prototype.indexOf()
  • String.prototype.lastIndexOf()
  • String.prototype.charCodeAt()
  • String.prototype.codePointAt()
  • String.prototype.split()
  • String.fromCodePoint()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *