Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASCII и latin.docx
Скачиваний:
3
Добавлен:
08.08.2019
Размер:
190.09 Кб
Скачать

7.7.9. Методы toString() и toLocaleString()

У массива, как и у любого другого объекта в JavaScript, имеется метод toString().

Для массива этот метод преобразует каждый из его элементов в строку (вызывая

в случае необходимости методы toString() для элементов массива) и выводит спи

сок этих строк через запятую. Отметьте, что результат не включает квадратных

скобок или какихлибо других разделителей вокруг значений массива. Например:

[1,2,3].toString() // Получается '1,2,3'

["a", "b", "c"].toString() // Получается 'a,b,c'

[1, [2,'c']].toString() // Получается '1,2,c'

Обратите внимание: toString() возвращает ту же строку, что и метод join() при

вызове его без аргументов.

Метод toLocaleString() – это локализованная версия toString(). Каждый элемент

массива преобразуется в строку вызовом метода toLocaleString() элемента, а за

тем результирующие строки конкатенируются с использованием специфическо

го для региона (и определенного реализацией) разделителя.

7.7.10. Дополнительные методы массивов

Броузер Firefox Mozilla 1.5 включает в себя новую версию JavaScript 1.6, в кото

рую был добавлен набор дополнительных методов массивов, получивших назва

ние дополнений к массивам (array extras). Из наиболее примечательных можно

назвать методы indexOf() и lastIndexOf(), позволяющие быстро отыскать в масси

ве заданное значение (описание аналогичного им метода String.indexOf() можно

найти в третьей части книги). Кроме того, в состав набора входят еще несколько

интересных методов: метод forEach() вызывает указанную функцию для каждо

го элемента в массиве; метод map() возвращает массив, полученный в результате

передачи всех элементов массива указанной функции; метод filter() возвраща

ет массив элементов, для которых заданная функция возвратила значение true.

На момент написания этих строк набор дополнительных методов массивов был

доступен только в броузере Firefox и пока еще не является стандартом ни официально, ни дефакто. Здесь эти методы не описываются. Однако если вы предпола

гаете заниматься разработкой сценариев только для Firefox или в вашем распоря

жении имеется библиотека, содержащая эти достаточно просто реализуемые ме

тоды, то подробное их описание можно найти на сайте

Шаблоны и регулярные выражения

Регулярное выражение – это объект, описывающий символьный шаблон. Класс

RegExp в JavaScript представляет регулярные выражения, а объекты классов

String и RegExp предоставляют методы, использующие регулярные выражения

для выполнения поиска по шаблону и операций поиска в тексте с заменой.1

Регулярные JavaScriptвыражения стандартизованы в ECMAScript v3. Java

Script 1.2 реализует только подмножество регулярных выражений, требуемых

стандартом ECMAScript v3, а полностью стандарт реализован в JavaScript 1.5.

Регулярные выражения в JavaScript в значительной степени базируются на

средствах регулярных выражений из языка программирования Perl. Грубо гово

ря, мы можем сказать, что JavaScript 1.2 реализует регулярные выражения

Perl 4, а JavaScript 1.5 – большое подмножество регулярных выражений Perl 5.

Эта глава начинается с определения синтаксиса, посредством которого в регуляр

ных выражениях описываются текстовые шаблоны. Затем мы перейдем к описа

нию тех методов классов String и RegExp, которые используют регулярные выра

жения.

11.1. Определение регулярных выражений

В JavaScript регулярные выражения представлены объектами RegExp. Объекты

RegExp могут быть созданы посредством конструктора RegExp(), но чаще они созда

ются с помощью специального синтаксиса литералов. Так же, как строковые ли

тералы задаются в виде символов, заключенных в кавычки, литералы регуляр

ных выражений задаются в виде символов, заключенных в пару символов слэша

(/). Таким образом, JavaScriptкод может содержать строки, похожие на эту:

1 Происхождение малопонятного термина «регулярное выражение» уходит в дале

кое прошлое. Синтаксис, применяемый для описания текстового шаблона, дейст

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

этот синтаксис очень далек от регулярного! Регулярные выражения иногда назы

вают «regexp», или просто «RE».11.1. Определение регулярных выражений 215

var pattern = /s$/;

Эта строка создает новый объект RegExp и присваивает его переменной pattern.

Данный объект RegExp ищет любые строки, заканчивающиеся символом s. (Ско

ро мы поговорим о грамматике определения шаблонов.) Это же регулярное вы

ражение может быть определено с помощью конструктора RegExp():

var pattern = new RegExp("s$");

Создание объекта RegExp – либо с помощью литерала, либо с помощью конструк

тора RegExp() – это самая простая часть работы. Более сложную задачу представ

ляет собой описание нужного шаблона с помощью синтаксиса регулярных выра

жений. JavaScript поддерживает довольно полное подмножество синтаксиса ре

гулярных выражений, используемых в Perl, поэтому если вы опытный Perlпро

граммист, то уже знаете, как описывать шаблоны в JavaScript.

Спецификация шаблона регулярного выражения состоит из последовательности

символов. Большинство символов, включая все алфавитноцифровые, просто бук

вально описывают символы, которые должны присутствовать. То есть регуляр

ное выражение /java/ ищет все строки, содержащие подстроку "java". Другие

символы в регулярных выражениях не предназначены для поиска их точных эк

вивалентов, а имеют особое значение. Например, регулярное выражение /s$/ со

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

Второй, $, – это специальный метасимвол, обозначающий конец строки. Таким

образом, это регулярное выражение соответствует любой строке, заканчиваю

щейся символом s.

В следующих разделах описаны различные символы и метасимволы, используе

мые в регулярных JavaScriptвыражениях. Следует заметить, что полное описа

ние регулярных выражений выходит за рамки темы этой книги, его можно най

ти в книгах по Perl, таких как книга издательства O’Reilly «Programming Perl»

Ларри Уолла (Larry Wall), Тома Кристиансена (Tom Christiansen) и Джона Ор

ванта (Jon Orwant).1 Еще один отличный источник информации по регулярным

выражениям – книга издательства O’Reilly «Mastering Regular Expressions»

Джеффри Фридла (Jeffrey E. F. Friedl).2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]