Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WEB - ЛР № 15.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
618.83 Кб
Скачать

Работа со строками

Одной из встроенных возможностей JavaScript является способность конкатенировать строки. Если оператор + применяется к числам, они складываются, а если к строкам - они объединяются, при этом вторая строка добавляется в конец первой.

Пример:

var str = 'Hello, ' + 'world!'; // Получается строка Hello, world!

// Конкатенация строки с переменной

var name = 'Александр';

str = 'Добро пожаловать, ' + name + '!';

Строки в JavaScript представлены объектом String, имеющим один конструктор, в котором передается строка. Когда функция String() вызывается в качестве конструктора (с оператором new), она возвращает объект String, содержащий строку s или строковое представление s. Конструктор String(), вызванный без оператора new, преобразует s в элементарное строковое значение и возвращает преобразованное значение.

Пример:

new String(s); // Функция-конструктор

String(s); // Функция преобразования

Объект String имеет единственное свойство - length, которое возвращает количество символов в строке.

Методы класса String

Метод

Описание

Пример использования

charAt()

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

var str = 'Hello, world!';

document.write(str.charAt(4)); // Результат 'o'

charCodeAt()

Возвращает код символа, находящегося в указанной позиции. (Код Юникода n-го символа в строке - 16-разрядное целое число между 0 и 65 535. )

var str = 'Hello, world!';

document.write(str.charCodeAt(4)); // Результат 111 - код символа 'o'

concat()

Выполняет конкатенацию одного или нескольких значений со строкой. concat() преобразует все свои аргументы в строки (если это нужно) и добавляет их по порядку в конец строки. Возвращает полученную объединенную строку.

// Получаем одну строку

(new String()).concat('Мы рады ', 'приветствовать ', 'вас на нашем сайте');

indexOf (подстрока, начало)

Выполняет поиск в строке от начала к концу, чтобы увидеть, содержит ли она искомую подстроку. Поиск начинается с позиции "начало" в строке или с начала строки, если аргумент "начало" не указан. Если подстрока найдена, String.indexOf() возвращает позицию первого символа первого вхождения подстроки в строку. Позиции символов в строке нумеруются с нуля. Если подстрока в строке не найдена, String.indexOf() возвращает -1.

var str = 'Hello, world!';

if (str.indexOf('world', 0) != -1)

document.write('Подстрока \'world\' найдена в исходной строке.');

lastIndexOf()

Выполняет поиск символа или подстроки в строке с конца.

var str = 'Hello, world!';

document.write('Позиция последней буквы "o" в исходной строке: ' +

+ str.lastIndexOf('o')); // Результат 8

localeCompare()

Сравнивает строки с учетом порядка следования символов национальных алфавитов. Возвращает число, обозначающее результат сравнения. Если строка «меньше» целевой строки, localeCompare() возвращает отрицательное число. Если строка «больше» целевой строки, метод возвращает положительное число. Если строки идентичны или неразличимы в соответствии с региональными соглашениями о сортировке, метод возвращает 0. Когда к строкам применяются операторы < и >, сравнение выполняется только по кодам Юникода этих символов; порядок сортировки, принятый в текущем регионе, не учитывается. Сортировка, выполняемая подобным образом, не всегда оказывается верной. Стандарт ECMAScript не определяет, как должно выполняться сравнение с учетом региона; в нем просто указано, что эта функция руководствуется порядком сортировки, определенным операционной системой.

var str1 = 'Строка1';

var str2 = 'Строка2';

if (str1.localeCompare(str2) != 0)

document.write('Строки не идентичны');

match()

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

var str = '1 плюс 2 равно 3'.match(/\d+/g); // Вернет массив {'1', '2', '3'}

replace()

Метод replace() выполняет операцию поиска и замены для строки. Он ищет в строке одну или несколько подстрок, соответствующих регулярному выражению и заменяет их. Если в регулярном выражении указан глобальный атрибут «g», replace() заменяет все найденные подстроки. В противном случае метод заменяет только первую найденную подстроку.  В стандарте ECMAScript v3 определено, что второй аргумент метода replace() может быть функцией, а не строкой. В этом случае функция будет вызываться для каждого найденного соответствия, а возвращаемая ею строка будет использоваться в качестве текста для замены.

var str = 'javascript - интерпретируемый язык программирования.';

// Обеспечение правильного регистра букв в слове «JavaScript»

str = str.replace(/JavaScript/i, "JavaScript");

search()

Метод search() ищет подстроку в строке, соответствующую регулярному выражению regexp, и возвращает позицию первого символа найденной подстроки или -1, если соответствие не найдено. Метод не выполняет глобального поиска, игнорируя флаг «g». Он также игнорирует свойство regexp.lastIndex и всегда выполняет поиск с начала строки, следовательно, всегда возвращает позицию первого соответствия, найденного в строке.

var str = 'JavaScript - интерпретируемый язык программирования.';

i = str.search('язык'); // Результат 30 (позиция слова 'язык' в исходной строке)

slice()

Метод slice() возвращает строку, содержащую фрагмент, или подстроку строки, но не изменяет строку. Первый аргумент - это индекс в строке, с которого должен начинаться фрагмент. Если этот аргумент отрицателен, он обозначает позицию, измеряемую от конца строки. То есть -1 соответствует последнему символу, -2 - второму с конца и т.д.. Второй аргумент - индекс символа исходной строки непосредственно после конца извлекаемого фрагмента. Если он не указан, фрагмент включает все символы от позиции начало до конца строки. Если этот аргумент отрицателен, он обозначает позицию, отсчитываемую от конца строки.

var str = 'абвгдежзик';

str1 = str.slice(0,4); // Вернет 'абвг'

str2 = str.slice(2,4); // Вернет 'вг'

str3 = str.slice(4); // Вернет 'дежзик'

str4 = str.slice(3,-1); // Вернет 'гдежзи'

str5 = str.slice(3,-2); // Вернет 'гдежз'

str6 = str.slice(-4,-2); // Вернет 'жз'

split()

Разбивает строку на массив строк по указанной строке-разделителю. Метод split() создает и возвращает массив подстрок указанной строки, причем размер возвращаемого массива не превышает указанный лимит (передается во втором аргументе). Эти подстроки создаются путем поиска текста, соответствующего разделителю (первый аргумент), в строке от начала до конца и разбиения строки до и после найденного текста. Ограничивающий текст не включается ни в одну из возвращаемых строк.

// Метод split() наиболее полезен при работе

// с сильно структурированными строками

var str = '1:2:3:4:5';

str.split(':'); // Вернет ["1","2","3","4","5"]

str = 'a||b||c';

str.split('||'); // Вернет ["a","b","c"]

// Чтобы разбить строку на массив символов,

// возьмите в качестве разделителя пустую строку

str = 'hello';

str.split(''); // Вернет ["h","e","l","l","o"]

str.split('',3); // Вернет ["h","e","l"]

substr()

Метод substr() извлекает и возвращает подстроку строки, но не изменяет строку. Обратите внимание: метод substr() задает нужную подстроку с помощью позиции символа и длины. Благодаря этому появляется удобная альтернатива методам String.substring() и String.splice(), в которых подстрока задается двумя символьными позициями. При этом следует отметить, что метод не стандартизован в ECMAScript и, следовательно, считается устаревшим.

var str = 'абвгдежзик';

str = str.substr(2,5); // Результат 'вгдеж'

substring()

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

var str = 'абвгдежзик';

str = str.substring(2,7); // Результат 'вгдеж'

toLowerCase()

Возвращает копию строки, в которой все символы переведены в нижний регистр.

var str = 'JavaScript';

str = str.toLowerCase(); // Результат 'javascript'

toString()

Возвращает элементарное строковое значение. Вызов этого метода требуется редко. Исключение TypeError генерируется, если метод вызывается для объекта, не являющегося объектом String.

toUpperCase()

Возвращает копию строки, в которой все символы переведены в верхний регистр.

var str = 'JavaScript';

str = str.toUpperCase(); // Результат 'JAVASCRIPT'

trim()

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

valueOf()

Возвращает элементарное строковое значение (аналогично toString(), используется редко).

С первых дней создания JavaScript в классе String определено несколько методов, которые возвращают строку, измененную путем добавления к ней HTML-тегов. Эти методы никогда не были стандартизованы в ECMAScript, но они позволяют динамически генерировать разметку HTML и в клиентских, и в серверных сценариях на языке JavaScript. Если вы готовы к использованию нестандартных методов, можете следующим образом создать разметку HTML для гиперссылки, выделенной полужирным шрифтом зеленого цвета.

Пример:

var str = 'щелкни здесь!';

var a_href = str.bold().fontcolor('green').link('JavaScript:alert("Привет!")');

document.write(a_href);

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

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