Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

Задача . Поиск и замена

Задача. Дана строка "aaa@bbb@ccc" . Замените все @ на "!" с помощью глобального поиска и замены.

Решение: в данном случае необходимо воспользоваться методом replace , который выполняет поиск и замену. Однако, при простом варианте использования, эта метод найдет и заменит только первое совпадение :

Var str = "aaa@bbb@ccc"; alert(str.replace("@", "!")); //получим "aaa!bbb@ccc"

Чтобы заменить все совпадения, воспользуемся глобальным поиском с помощью регулярного выражения :

Var str = "aaa@bbb@ccc"; alert(str.replace(/@/g, "!")); //получим "aaa!bbb!ccc"

Задача . Методы substr, substring, slice

Задача. Дана строка "aaa bbb ccc" . Вырежите из нее слово "bbb" тремя разными способами (через substr , substring , slice).

Решение: слово "bbb" начинается с символа номер 4 (нумерация с нуля), а заканчивается символом номер 6. Воспользуемся указанными методами:

Var str = "aaa bbb ccc"; alert(str.substr(4, 3)); //substr(откуда отрезать, сколько отрезать) alert(str.substring(4, 7)); //substring(откуда отрезать, докуда отрезать) alert(str.slice(4, 7)); //slice(откуда отрезать, докуда отрезать)

Обратите внимание на то, что в методах substring и slice второй параметр должен быть на 1 больше того символа, который мы хотим забрать (то есть, если указать число 7 - то отрезание произойдет до 6 символа включительно).

Задача . Преобразование формата даты

Задача. В переменной date лежит дата в формате "2025-12-31" "31/12/2025" .

Решение: с помощью метода split разобьем нашу строку "2025-12-31" в массив по разделителю "-" , при этом в нулевом элементе окажется год, в первом - месяц, во втором - день:

Var str = "2025-12-31"; var arr = split("-"); alert(arr);//получим массив ["2025", "12", "31"]

Теперь, обращаясь к разным элементам массива по их ключам, сформируем нужную нам строку:

Var str = "2025-12-31"; var arr = split("-"); var newStr = arr + "/" + arr + "/"+arr; alert(newStr); //получим строку "31/12/2025"

Задачи для решения

Работа с регистром символов

Дана строка "js" . Сделайте из нее строку "JS" .

Дана строка "JS" . Сделайте из нее строку "js" .

Работа с length, substr, substring, slice. Работа с indexOf

Дана строка "я учу javascript!" . Найдите количество символов в этой строке.

Дана строка "я учу javascript!" . Найдите позицию подстроки "учу" .

Дана переменная str , в которой хранится какой-либо текст. Реализуйте обрезание длинного текста по следующему принципу: если количество символов этого текста больше заданного в переменной n, то в переменную result запишем первые n символов строки str и добавим в конец троеточие "...". В противном случае в переменную result запишем содержимое переменной str .

Работа с replace

Дана строка "Я-учу-javascript!" . Замените все дефисы на "!" с помощью глобального поиска и замены.

Работа с split

Дана строка "я учу javascript!" . С помощью метода split запишите каждое слово этой строки в отдельный элемент массива.

Дана строка "я учу javascript!" . С помощью метода split запишите каждый символ этой строки в отдельный элемент массива.

В переменной date лежит дата в формате "2025-12-31" . Преобразуйте эту дату в формат "31.12.2025" .

Работа с join

Дан массив ["я", "учу", "javascript", "!"] . С помощью метода join преобразуйте массив в строку "я+учу+javascript+!" .

Задачи

Преобразуйте первую букву строки в верхний регистр.

Преобразуйте первую букву каждого слова строки в верхний регистр.

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

Некоторые видео могут забегать вперед, тк к этому месту учебника мы прошли еще не весь ES6. Просто пропускайте такие видео, посмотрите потом.

Задача . Поиск и замена

Задача. Дана строка "aaa@bbb@ccc" . Замените все @ на "!" с помощью глобального поиска и замены.

Решение: в данном случае необходимо воспользоваться методом replace , который выполняет поиск и замену. Однако, при простом варианте использования, эта метод найдет и заменит только первое совпадение :

Var str = "aaa@bbb@ccc"; alert(str.replace("@", "!")); //получим "aaa!bbb@ccc"

Чтобы заменить все совпадения, воспользуемся глобальным поиском с помощью регулярного выражения :

Var str = "aaa@bbb@ccc"; alert(str.replace(/@/g, "!")); //получим "aaa!bbb!ccc"

Задача . Методы substr, substring, slice

Задача. Дана строка "aaa bbb ccc" . Вырежите из нее слово "bbb" тремя разными способами (через substr , substring , slice).

Решение: слово "bbb" начинается с символа номер 4 (нумерация с нуля), а заканчивается символом номер 6. Воспользуемся указанными методами:

Var str = "aaa bbb ccc"; alert(str.substr(4, 3)); //substr(откуда отрезать, сколько отрезать) alert(str.substring(4, 7)); //substring(откуда отрезать, докуда отрезать) alert(str.slice(4, 7)); //slice(откуда отрезать, докуда отрезать)

Обратите внимание на то, что в методах substring и slice второй параметр должен быть на 1 больше того символа, который мы хотим забрать (то есть, если указать число 7 - то отрезание произойдет до 6 символа включительно).

Задача . Преобразование формата даты

Задача. В переменной date лежит дата в формате "2025-12-31" "31/12/2025" .

Решение: с помощью метода split разобьем нашу строку "2025-12-31" в массив по разделителю "-" , при этом в нулевом элементе окажется год, в первом - месяц, во втором - день:

Var str = "2025-12-31"; var arr = split("-"); alert(arr);//получим массив ["2025", "12", "31"]

Теперь, обращаясь к разным элементам массива по их ключам, сформируем нужную нам строку:

Var str = "2025-12-31"; var arr = split("-"); var newStr = arr + "/" + arr + "/"+arr; alert(newStr); //получим строку "31/12/2025"

Задачи для решения

Работа с регистром символов

Дана строка "js" . Сделайте из нее строку "JS" .

Дана строка "JS" . Сделайте из нее строку "js" .

Работа с length, substr, substring, slice. Работа с indexOf

Дана строка "я учу javascript!" . Найдите количество символов в этой строке.

Дана строка "я учу javascript!" . Найдите позицию подстроки "учу" .

Дана переменная str , в которой хранится какой-либо текст. Реализуйте обрезание длинного текста по следующему принципу: если количество символов этого текста больше заданного в переменной n, то в переменную result запишем первые n символов строки str и добавим в конец троеточие "...". В противном случае в переменную result запишем содержимое переменной str .

Работа с replace

Дана строка "Я-учу-javascript!" . Замените все дефисы на "!" с помощью глобального поиска и замены.

Работа с split

Дана строка "я учу javascript!" . С помощью метода split запишите каждое слово этой строки в отдельный элемент массива.

Дана строка "я учу javascript!" . С помощью метода split запишите каждый символ этой строки в отдельный элемент массива.

В переменной date лежит дата в формате "2025-12-31" . Преобразуйте эту дату в формат "31.12.2025" .

Работа с join

Дан массив ["я", "учу", "javascript", "!"] . С помощью метода join преобразуйте массив в строку "я+учу+javascript+!" .

Задачи

Преобразуйте первую букву строки в верхний регистр.

Преобразуйте первую букву каждого слова строки в верхний регистр.

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

Некоторые видео могут забегать вперед, тк к этому месту учебника мы прошли еще не весь ES6. Просто пропускайте такие видео, посмотрите потом.

Тип данных строка (string) используется для представления текста. Соответственно, значениями типа string является текст. Любой текст в JavaScript является строкой.

Кавычки

Строки в JavaScript должны быть заключены в кавычки. В JavaScript существует три вида кавычек: двойные (" "), одинарные (" ") и обратные (` `):

"Строка в двойных кавычках" "Строка в одинарных кавычках" `Строка в обратных кавычках`

Вид кавычек в начале и конце строки должен совпадать.

Строки могут состоять из нуля и более символов:

"" // Пустая строка "Строка" // Не пустая строка

Строки с двойными и одинарными кавычками ничем не отличаются между собой по функционалу - они могут содержать лишь текст и управляющие последовательности. А вот строки с обратными кавычками имеют более широкий функционал. Такие строки могут содержать так называемые подстановки , обозначаемые знаком доллара и фигурными скобками ${выражение} . Подстановки могут содержать любые произвольные выражения:

Let стр = "Мир!"; let стр2 = `Привет, ${стр}`; // Использование переменной в строке alert(стр2); // Привет, Мир! alert(`2 + 3 = ${2 + 3}.`); // 2 + 3 = 5.

Выражение, расположенное в подстановке (${...}) вычисляется, и его результат становится частью строки.

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

Let числа = `Числа: 1 2`; alert(числа); // Числа: // 1 // 2

Строки с обратными кавычками называются строками-шаблонами или шаблонными литералами .

Строки, заключённые в одни кавычки, могут содержать другие кавычки:

"одинарные "кавычки" и `обратные` внутри двойных" "а здесь "так" и `так`!" `а здесь "так" и "так"!`

Для удобства, большие строковые литералы можно разбивать на несколько строк, заканчивая каждую строку, кроме последней, символом \ :

Alert("это всё одна \ длинная \ строка"); // это всё одна длинная строка alert("это всё одна \ длинная \ строка"); // это всё одна длинная строка alert(`это всё одна \ длинная \ строка`); // это всё одна длинная строка

Кодировка символов строки

Вне зависимости от того, какая кодировка установлена для страницы, в JavaScript для строк всегда используется кодировка UTF-16.

В JavaScript строка - это неизменяемая, упорядоченная последовательность 16-битных значений, каждое из которых представляет символ Unicode. Для представления символов Unicode в JavaScript используется кодировка UTF-16. Символы включают в себя буквы, цифры, знаки пунктуации, специальные символы и пробельные символы.

Длина строки

Длина строки - это количество 16-битных значений (а не самих символов), содержащихся в ней. Длину строки содержит свойство length:

Alert("Привет".length); // 6

Символы, кодовые пункты которых не умещаются в 16 бит, обрабатываются в соответствии с правилами кодировки UTF-16 как последовательности из двух 16-битных значений. Это означает, что строка, имеющая длину, равную 2 (два 16-битных значения), на деле может представлять единственный символ:

Alert("a".length); // 1 alert("𝑒".length); // 2

Нумерация и доступ к символам строки

Как уже было сказано, строка представляет собой упорядоченную последовательность 16-битных значений, каждому из которых соответствует определённый символ. Нумерация 16-битных значений в строке начинается с нуля, т. е. первое 16-битное значение находится под индексом 0, второе - под индексом 1 и т. д. Индекс - это порядковый номер.

Получить символ строки (состоящий из одного 16-битного значения) можно с помощью индекса, заключённого в квадратные скобки [индекс] :

Let стр = "Привет"; alert(стр); // П alert(стр); // В

Чтобы с помощью индексов обратиться к символу, состоящему из двух 16-битных значений, нужно, используя конкатенацию, написать эти индексы так, чтобы в результате получилась последовательность из двух 16-битных значений:

Let стр = "𝑒"; alert(стр + стр); // "𝑒"

Строки неизменяемые

В JavaScript строки неизменяемые. Это значит, что в уже существующей строке нельзя менять никакие символы или добавлять в неё что-то новое.

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

Let стр = "Привет!"; alert(стр.toUpperCase()); // "HELLO" - новое возвращаемое методом значение alert(стр); // "hello" - первоначальная строка не изменена

Чтобы изменить строку, можно создать новую строку и записать её в ту же самую переменную вместо старой строки:

Let стр = "Строка"; стр = стр.toUpperCase(); alert(стр); // "СТРОКА"

Управляющие последовательности

В строковых литералах можно использовать управляющие последовательности. Управляющая последовательность - это последовательность, состоящая из обычных символов, которая обозначает символ, не представимый внутри строки другими способами. Управляющие последовательности предназначены для форматирования вывода текстового содержимого.

В таблице ниже представлены управляющие последовательности:

Последовательность Значение
\0 Символ NUL - пустой символ ("\u0000").
\t Горизонтальная табуляция ("\u0009").
\n Перевод на новую строку ("\u000A").
\b Возврат на одну позицию - то, что происходит при нажатии на клавишу backspace ("\u0008").
\r Возврат каретки ("\u000D").
\f Перевод страницы - очистка страницы ("\u000C").
\v Вертикальная табуляция ("\u000B").
\" Двойная кавычка ("\u0022").
\" Одинарная кавычка ("\u0027").
\\ Обратный слэш ("\u005C").
\xNN Номер символа из набора символов ISO Latin-1, заданный двумя шестнадцатеричными цифрами (N - шестнадцатеричная цифра 0-F). Например, "\x41" (это код буквы "A").
\uNNNN Номер символа из набора символов Unicode, заданный четырьмя шестнадцатеричными цифрами (N - шестнадцатеричная цифра 0-F). Например, "\u0041" (это код буквы "A"s).

Управляющие последовательности могут находиться в любом месте строки:

Alert("Греческая буква сигма: \u03a3."); // Греческая буква сигма: Σ. alert("Многострочная\nстрока") // Многострочная // строка alert("внутри используются \"двойные\" кавычки"); // внутри используются "двойные" кавычки

Если символ \ предшествует любому символу, отличному от приведённых в таблице, то он просто игнорируется интерпретатором:

Alert("\k"); // "k"

Символы Unicode, указываемые с помощью управляющей последовательности, можно использовать не только внутри строковых литералов, но и в идентификаторах:

Let a\u03a3 = 5; alert(a\u03a3); // 5

Конкатенация

Конкатенация - это объединение двух или более строк в одну большую. Объединение происходит с помощью оператора + (плюс). При конкатенации каждая последующая строка добавляется в конец предыдущей:

Var str1 = "Hello "; var str2 = "World!"; document.write(str1 + str2 + "
"); // "Hello World!" document.write(str1 + "World!"); Попробовать »

Значение любого типа, которое объединяется со строкой, будет неявно (автоматически) преобразовано в строку и далее будет произведена конкатенация.

Var str1 = "Hello "; alert(str1 + 1); // "Hello 1" alert(true + str1); // "trueHello" alert(str1 + NaN); // "Hello NaN"

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

Строки — это просто группы символов, такие как « JavaScript », « Hello world! », « http://www.quirksmode.org » или даже « 14 ». Для программирования на JavaScript Вам необходимо знать, что такое строки и как с ними работать, т. к. использовать их придется очень часто. Многие вещи, такие как URL -страницы, значения CSS -параметров и элементов ввода форм — все является строками.

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

Основы работы со строками

Давайте рассмотрим основы работы со строками в JavaScript.

Использование кавычек

Когда Вы объявляете строки в JavaScript или работаете с ними, всегда заключайте их в одинарные или двойные кавычки. Этим Вы объясняете браузеру, что он имеет дело со строкой. Не смешивайте использование кавычек в коде, если Вы начали строку с одинарной кавычки, а закончили двойной, JavaScript не поймет, что Вы имели в виду. Как правило, я использую одинарные кавычки для работы со строками, так как двойные кавычки я решил использовать для HTML , а одинарные — для JavaScript. Конечно, Вы можете делать все по-другому, но я советую вам придумать подобное правило для себя.

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

Var a = "Hello world!"; var b = "I am a student.";

Сейчас мы объявили две переменные, « a » и « b », и присвоили им строковые значения. После этого мы можем с ними работать, но сначала решим одну проблему: допустим, я написал:

Var b = "I"m a student.";

Строка содержит в себе лишнюю одинарную кавычку, и JavaScript думает, что строка закончена и выводит сообщение об ошибке, не понимая, что следует дальше. Поэтому Вам нужно экранировать кавычку , сообщая браузеру, что её нужно рассматривать как символ, а не как окончание строки. Это осуществляется с помощью «обратного слеша» перед кавычкой:

Var b = "I\"m a student.";

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

Var b = "I\"m a "student".";

воспринимается без проблем. Двойные кавычки автоматически рассматриваются, как части строки, а не команды.

Встроенные функции

После определения строк можно начать их использование. Например, Вы можете соединить одну строку с другой , или взять из строки « b » подстроку, состоящую из второго—четвертого символов и вставить их в середину строки « a », или определить какой символ стоит двенадцатым в « a », сколько символов в « b », есть ли в них буква «q» и т. д.

Для этого Вы можете использовать встроенные функции, которые JavaScript предопределяет для каждой строки. Одна из них — «length» — возвращает длину строки. То есть если Вы хотите вычислить длину «Hello world!», напишите:

Var c = "Hello world!".length;

Ранее мы присвоили эту строку переменной « а ». Таким образом, Вы сделали переменную « a » строкой, поэтому к ней тоже применима функция «length», и следующая операция даст такой же результат:

Var c = a.length;

Запомните, что Вы можете использовать «length» для любой строки — это встроенная функция. Вы можете вычислить длину любой строки , например: « location.href » или « document.title » или объявленной Вами.

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

Строки и числа

В некоторых языках программирования от Вас требуется указывать, является ли переменная числом или строкой, перед тем, как делать с ней что-либо ещё. JavaScript проще относится к разнице между строками и числами. Фактически Вы даже можете складывать числа со строками:

Var c = a + 12;

В некоторых языках программирования обработка такой строки приведет к ошибке. Всё же « a » — это строка, а «12» — число. Однако JavaScript пытается решить проблему, предполагая, что «12» — тоже строка. Таким образом « с » принимает значение « Hello world!12 ». Значит, если Вы используете «+» со строкой и числом, JavaScript пытается сделать из числа строку. Если же Вы применяете математические операции к строке, JavaScript пробует превратить её в число. При отсутствии возможности перевода строки в число (например, из-за наличия в ней букв), JavaScript возвращает NaN — «Not a Number — не является числом».

Наконец, в JavaScript нет разницы между целыми величинами и числами с плавающей точкой.

Число → строка

Для преобразования числа в строку введите:

Var c = (16 * 24) / 49 + 12; d = c.toString();

После этого Вы можете применять к « d » все строковые методы, а « c » все ещё содержит число.

Строка → число

Если Вы хотите преобразовать строку в число, сначала убедитесь, что она состоит только из символов 0—9 . Для этого я просто умножаю строку на 1 .

Var c = "1234"; d = c * 1;

Так как умножение производится только с числами, JavaScript превращает строку в число, если это возможно. В противном случае, результат — NaN .

Заметим, если написать:

Var c = "1234"; d = c + 0;

Результатом будет « 12340 », потому что JavaScript использует «+» для соединения строк, а не их сложения.

Строковые свойства и методы

Так что же мы можем делать со строками? Объединение — это особый случай, но все остальные команды (методы) могут использоваться с любой строкой с помощью конструкции:

Имя_строки.метод();

Список встроенных методов JavaScript для работы со строками

Конкатенация — объединение строк

Во-первых, Вы можете объединить строки, сложив их вместе, вот так:

Document.write(a + b);

в результате получится: « Hello world!I am a student. ». Но, конечно же, Вы хотите, чтобы между предложениями был пробел. Для этого запишем код следующим образом:

Document.write(a + " " + b);

Так мы соединим три строки: « а », « " " » (один пробел) и « b », в итоге получив: « Hello world! I am a student. »

Вы можете использовать даже числа или вычисления, например:

Document.write (a + 3 * 3 + b);

Сейчас мы соединяем строку « а », затем результат выражения « 3 * 3 », рассматриваемый как строка, и « b », получая: « Hello world!9 I am a student. »

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

Document.write (a + 3 + 3 + b);

соединяет 4 строки: « а », « 3 », « 3 » и « b », потому что «+» в данном случае означает «соединить строки», а не «сложить» и в результате: « Hello world!33 I am a student. ». Если Вы хотите сложить 3 и 3 перед созданием строки, используйте скобки.

Document.write (a + (3 + 3) + b);

Данное выражение соединяет строку « а », результат выражения « 3 + 3 » и « b », в итоге: « Hello world!6 I am a student. ».

indexOf

Один из самых широко используемых встроенных методов это «indexOf». Каждый символ имеет свой индекс, содержащий номер его позиции в строке. Заметим, что индекс первого символа — 0 , второго — 1 и т. д. Таким образом, индекс символа «w» в сроке « а » — 6 .

Используя «indexOf» мы можем вывести индекс символа. Напишите « .indexOf(" ") » после названия строки и вставьте искомый символ между кавычками. Например:

Var a = "Hello world!"; document.write(a.indexOf("w"));

возвратит 6 . Если символ встречается несколько раз, этот метод возвращает первое вхождение. То есть

Document.write(a.indexOf("o"));

возвратит 4 , потому что это индекс первой «o» в строке.

Вы также можете искать комбинацию символов. (Конечно, это тоже строка, но, чтобы избежать путаницы, я не буду называть её так). «indexOf» возвращает позицию первого символа комбинации. Например:

Document.write(a.indexOf("o w"));

тоже возвратит 4 , потому что это индекс «o».

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

Document.write(a.indexOf("o", 5));

то получите индекс первой «o», следующей за символом с индексом 5 (это пробел), то есть результат будет — 7 .

Если символ или комбинация не встречается в строке, «indexOf» возвратит « -1 ». Это, по сути, самое популярное применение «indexOf»: проверка существования определенной комбинации символов. Оно является ядром скрипта, определяющего браузер. Для определения IE Вы берете строку:

Navigator.userAgent;

и проверяете, содержит ли она « MSIE »:

If(navigator.userAgent.indexOf("MSIE") != -1) { //Какие-либо дествия с Internet Explorer }

Если индекс « MSIE » — не « -1 » (если « MSIE » встречается где-либо в строке), то текущий браузер — IE .

lastIndexOf

Также существует метод «lastIndexOf», который возвращает последнее вхождение символа или комбинации. Он действует противоположно «indexOf». Команда

Var b = "I am a student."; document.write(b.lastIndexOf("t"));

возвратит 13 , потому что это индекс последней «t» в строке.

charAt

Метод «charAt» возвращает символ, стоящий на указанной позиции. Например, когда Вы вводите

Var b = "I am a student."; document.write(b.charAt(5));

в результате получается « a », так как это символ на шестой позиции (помните, что индекс первого символа начинается с 0).

length

Метод «length» возвращает длину строки.

Var b = "I am a student."; document.write(b.length);

возвратит «15». Длина строки на 1 больше, чем индекс последнего символа.

split

« split » — это специальный метод, позволяющий разделить строку по определенным символам. Используется, когда результат необходимо заносить в массив, а не в простую переменную. Давайте разделим « b » по пробелам:

Var b = "I am a student." var temp = new Array(); temp = b.split(" ");

Теперь строка разбита на 4 подстроки, которые помещаются в массив « temp ». Сами пробелы исчезли.

Temp = "I"; temp = "am"; temp = "a"; temp = "student";

Метод «substring» используется для выделения части строки. Синтаксис метода: « .substring(первый_индекс, последний_индекс) ». Например:

Var a = "Hello world!"; document.write(a.substring(4, 8));

возвратит « o wo », от первой «o» (индекс 4) до второй (индекс 7). Заметьте, что «r» (индекс 8) не является частью подстроки.

Также можно написать:

Var a = "Hello world!"; document.write(a.substring(4));

Это даст целую подстроку « o world! », начиная от символа с индексом 4 и до конца строки.

substr

Также есть метод «substr», работающий немного по-другому. В качестве второго аргумента он использует не номер индекса, а количество символов. То есть

Document.write(a.substr(4, 8));

возвращает 8 символов, начиная от символа с индексом 4 («o»), то есть в результате получаем: « o world! »

toLowerCase и toUpperCase

Наконец, 2 метода, которые иногда могут Вам пригодиться: «toLowerCase» переводит всю строку в нижний регистр, а «toUpperCase» — в верхний.

Var b = "I am a student."; document.write(b.toUpperCase());

В результате получим « I AM A STUDENT. ».

Существует несколько способов выбора подстрок в JavaScript, включая substring() , substr() , slice() и функции regexp .

В JavaScript 1.0 и 1.1, substring() существует как единственный простой способ выбора части большей строки. Например, чтобы выбрать строку press из Expression , используйте "Expression".substring(2,7) . Первый параметр для функции - символьный индекс, в котором начинается выбор, в то время как второй параметр - символьный индекс, в котором заканчивается выбор (не включающий): substring(2,7) включает индексы 2, 3, 4, 5, и 6.

В JavaScript 1.2, функции substr() , slice() и regexp могут также использоваться для разбиения строк.

Substr() ведет себя таким же образом, что и substr языка Перл, где первый параметр обозначает символьный индекс, в котором начинается выбор, в то время как второй параметр указывает длину подстроки. Чтобы выполнить ту же самую задачу, как в предыдущем примере, нужно использовать "Expression".substr(2,5) . Помните, 2 - это точка начала, а 5 - длина возникающей в результате подстроки.

При использовании на строках, slice() ведет себя аналогично функции substring() . Это, однако, гораздо более мощное средство, способное функционировать с любым типом массива, и не только со строками. slice() также использует отрицательные смещения для обращения к нужной позиции, начиная с конца строки. "Expression".slice(2,-3) возвратит подстроку, найденную между вторым символом и третьим символом с конца, возвращая опять press.

Последний и наиболее универсальный метод для работы с подстроками - это работа через регулярные функции выражения в JavaScript 1.2. Еще раз, обращая внимание на тот же пример, подстрока "press" получается из строки "Expression" :

Write("Expression".match(/press/));

Встроенный объект String

Объект String — это объектная реализация примитивного строкового значения. Его конструктор имеет вид:

New String(значение ?)

Здесь значение — любое строковое выражение, задающее примитивное значение объекта. Если оно не указано, то примитивное значение объекта равно "" .

Свойства объекта String:

constructor Конструктор, который создал объект. Количество символов в строке. prototype Ссылка на прототип класса объектов.

Стандартные методы объекта String

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

Нестандартные методы объекта String

Создает закладку HTML (…). Заключает строку в теги …. Заключает строку в теги …. Заключает строку в теги …. Заключает строку в теги …. Заключает строку в теги …. Заключает строку в теги …. Заключает строку в теги …. Создает гиперссылку HTML (…). Заключает строку в теги …. Заключает строку в теги …. Заключает строку в теги …. Заключает строку в теги ….

Свойство length

Синтаксис : объект .length Атрибуты : { DontEnum, DontDelete, ReadOnly }

Значением свойства length является количество символов в строке. Для пустой строки это значение равно нулю.

Метод anchor

Синтаксис : объект .anchor(имя ) Аргументы : имя Результат : строковое значение

Метод anchor объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для создания в HTML-документе закладки с заданным именем . Например, оператор document.write("Мой текст".anchor("Закладка")) эквивалентен оператору document.write("Мой текст") .

Метод big

Синтаксис : объект .big() Результат : строковое значение

Метод big возвращает строку, состоящую из объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста крупным шрифтом. Например, оператор document.write("Мой текст".big()) выведет на экран обозревателя строку Мой текст.

Метод blink

Синтаксис : объект .blink() Результат : строковое значение

Метод blink возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста мигающим шрифтом. Указанные теги не входят в стандарт HTML и поддерживаются только обозревателями Netscape и WebTV. Например, оператор document.write("Мой текст".blink()) выведет на экран обозревателя строку Мой текст.

Метод bold

Синтаксис : объект .bold() Результат : строковое значение

Метод bold возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста полужирным шрифтом. Например, оператор document.write("Мой текст".bold()) выведет на экран обозревателя строку Мой текст .

Метод charAt

Синтаксис : объект .charAt(позиция ) Аргументы : позиция — любое числовое выражение Результат : строковое значение

Метод charAt возвращает строку, состоящую из символа, расположенного в данной позиции примитивного значения строкового объекта . Позиции символов строки нумеруются от нуля до объект . -1. Если позиция лежит вне этого диапазона, то возвращается пустая строка. Например, оператор document.write("Строка".charAt(0)) выведет на экран обозревателя символ С.

Метод charCodeAt

Синтаксис : объект .charCodeAt(позиция ) Аргументы : позиция — любое числовое выражение Результат : числовое значение

Метод charAt возвращает число, равную коду Unicode символа, расположенного в данной позиции примитивного значения строкового объекта . Позиции символов строки нумеруются от нуля до объект . -1. Если позиция лежит вне этого диапазона, то возвращается NaN . Например, оператор document.write("Строка".charCodeAt(0).toString(16)) выведет на экран обозревателя шестнадцатеричный код русской буквы "С": 421 .

Метод concat

Синтаксис : объект .concat(строка0 , строка1 , …, строкаN ) Аргументы : строка0 , строка1 , …, строкаN — любые строковые выражения Результат : строковое значение

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

объект + строка0 + строка1 + … + строкаN

Например, оператор document.write("Мороз и солнце. ".concat("День чудесный.")) выведет на экран обозревателя строку Мороз и солнце. День чудесный.

Метод fixed

Синтаксис : объект .fixed() Результат : строковое значение

Метод fixed возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста телетайпным шрифтом. Например, оператор document.write("Мой текст".fixed()) выведет на экран обозревателя строку Мой текст.

Метод fontcolor

Синтаксис : объект .fontcolor(цвет) Аргументы : цвет — строковое выражение Результат : строковое значение

Метод fontcolor возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги цвет >… . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста заданным цветом. Например, оператор document.write("Мой текст".fontcolor("red")) выведет на экран обозревателя строку Мой текст .

Метод fontsize

Синтаксис : объект .fontsize(размер ) Аргументы : размер — числовое выражение Результат : строковое значение

Метод fontsize возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста шрифтом заданного размера. Например, оператор document.write("Мой текст".fontsize(5)) выведет на экран обозревателя строку Мой текст .

Метод fromCharCode

Синтаксис : String.fromCharCode(код1 , код2 , …, кодN ) Аргументы : код1 , код2 , …, кодN — числовые выражения Результат : строковое значение

Метод fromCharCode создает новую строку (но не строковый объект), которая является конкатенацией символов Unicode с кодами код1 , код2 , …, кодN .

Это статический метод объекта String , поэтому для доступа к нему не нужно специально создавать строковый объект. Пример:

Var s = String.fromCharCode(65, 66, 67); // s равно "ABC"

Метод indexOf

Синтаксис : объект .indexOf(подстрока [,начало ]?) Аргументы : подстрока — любое строковое выражение начало — любое числовое выражение Результат : числовое значение

Метод indexOf возвращает первую позицию подстроки в примитивном значении строкового объекта . объект начало начало начало начало больше, чем объект объект

Поиск ведется слева направо. В остальном этом метод идентичен методу . Следующий пример подсчитывает количество вхождений подстроки pattern в строку str .

Function occur(str, pattern) { var pos = str.indexOf(pattern); for (var count = 0; pos != -1; count++) pos = str.indexOf(pattern, pos + pattern.length); return count; }

Метод italics

Синтаксис : объект .italics() Результат : строковое значение

Метод italics возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста курсивным шрифтом. Например, оператор document.write("Мой текст".italics()) выведет на экран обозревателя строку Мой текст .

Метод lastIndexOf

Синтаксис : объект .lastIndexOf(подстрока [,начало ]?) Аргументы : подстрока — любое строковое выражение начало — любое числовое выражение Результат : числовое значение

Метод lastIndexOf возвращает последнюю позицию подстроки в примитивном значении строкового объекта объект . -1. Если задан необязательный аргумент начало , то поиск ведется, начиная с позиции начало ; если нет, то с позиции 0, т. е. с первого символа строки. Если начало отрицательно, то оно принимается равным нулю; если начало больше, чем объект . -1, то оно принимается равным объект . -1. Если объект не содержит данной подстроки, то возвращается значение -1.

Поиск ведется справа налево. В остальном этом метод идентичен методу . Пример:

Var n = "Белый кит".lastIndexOf("кит"); // n равно 6

Метод link

Синтаксис : объект .link(uri ) Аргументы : uri — любое строковое выражение Результат : строковое значение

Метод link возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги uri ">… . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для создания в HTML-документе гиперссылки с заданным uri . Например, оператор document.write("Мой текст".link("#Закладка")) эквивалентен оператору document.write("Мой текст") .

Метод localeCompare

Синтаксис : объект .localeCompare(строка1 ) Аргументы : строка1 — любое строковое выражение Результат : число

Поддержка

Метод localeCompare сравнивает две строки с учетом национальных установок операционной системы. Он возвращает -1, если примитивное значение объекта меньше строки1 , +1, если оно больше строки1 , и 0, если эти значения совпадают.

Метод match

Синтаксис : объект .match(регвыр ) Аргументы : регвыр Результат : массив строк

Метод match регвыр объекта . Результатом сопоставления является массив найденных подстрок или null , если соответствий нет. При этом:

  • Если регвыр не содержит опцию глобального поиска, то выполняется метод регвыр .exec (объект ) и возвращается его результат. Результирующий массив содержит в элементе с индексом 0 найденную подстроку, а в остальных элементах — подстроки, соответствующие подвыражениям регвыр , заключенным в круглые скобки.
  • Если регвыр содержит опцию глобального поиска, то метод регвыр .exec (объект ) выполняется до тех пор, пока находятся соответствия. Если n — количество найденных соответствий, то результатом является массив из n элементов, которые содержат найденные подстроки. Свойству регвыр .lastIndex присваивается номер позиции в исходной строке, указывающий на первый символ после последнего найденного соответствия, или 0, если соответствий не найдено.

Следует помнить, что метод регвыр .exec изменяет свойства объекта регвыр . Примеры:

Метод replace

Синтаксис : объект .replace(регвыр ,строка ) объект .replace(регвыр ,функция ) Аргументы : регвыр — регулярное выражение строка — строковое выражение функция — имя функции или декларация функции Результат : новая строка

Метод replace сопоставляет регулярное выражение регвыр с примитивным значением строкового объекта и заменяет найденные подстроки другими подстроками. Результатом является новая строка, которая является копией исходной строки с проведенными заменами. Способ замены определяется опцией глобального поиска в регвыр и типом второго аргумента.

Если регвыр не содержит опцию глобального поиска, то выполняется поиск первой подстроки, соответствующей регвыр и производится ее замена. Если регвыр содержит опцию глобального поиска, то выполняется поиск всех подстрок, соответствующих регвыр , и производится их замена.

строка , то замена каждой найденной подстроки производится на нее. При этом строка может содержать такие свойства объекта RegExp , как $1 , …, $9 , lastMatch , lastParen , leftContext и rightContext . Например, оператор document.write("Вкусные яблоки, сочные яблоки.".replace(/яблоки/g, "груши")) выведет на экран обозревателя строку Вкусные груши, сочные груши.

Если вторым аргументом является функция , то замена каждой найденной подстроки производится вызовом этой функции. Функция имеет следующие аргументы. Первый аргумент — это найденная подстрока, затем следуют аргументы, соответствующие всем подвыражениям регвыр , заключенным в круглые скобки, предпоследний аргумент — это позиция найденной подстроки в исходной строке, считая с нуля, и последний аргумент— это сама исходная строка. Следующий пример показывает, как с помощью метода replace можно написать функцию преобразования градусов Фаренгейта в градусы Цельсия. Приведенный сценарий

Function myfunc($0,$1) { return (($1-32) * 5 / 9) + "C"; } function f2c(x) { var s = String(x); return s.replace(/(\d+(\.\d*)?)F\b/, myfunc); } document.write(f2c("212F"));

выведет на экран обозревателя строку 100C .

Следует помнить, что этот метод изменяет свойства объекта регвыр .

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

Замена всех вхождений подстроки в строку

Часто случается, что нужно заменить все вхождения одной строки в другую строку:

Var str = "foobarfoobar"; str=str.replace(/foo/g,"xxx"); // в итоге получиться str = "xxxbarxxxbar";

Метод search

Синтаксис : объект .search(регвыр ) Аргументы : регвыр — любое регулярное выражение Результат : числовое выражение

Метод search сопоставляет регулярное выражение регвыр с примитивным значением строкового объекта . Результатом сопоставления является позиция первой найденной подстроки, считая с нуля, или -1, если соответствий нет. При этом опция глобального поиска в регвыр игнорируется, и свойства регвыр не изменяются. Примеры:

Метод slice

Синтаксис : объект .slice(начало [,конец ]?) Аргументы : начало и конец — любые числовые выражения Результат : новая строка

Метод slice объекта , от позиции начало до позиции конец , не включая ее. Если конец начало и до конца исходной строки.

Позиции символов строки нумеруются от нуля до объект . -1. Если значение начало объект . +начало . Если значение конец отрицательно, то оно заменяется на объект . +конец . Иными словами, отрицательные аргументы трактуются как смещения от конца строки.

Результатом является строковое значение, а не строковый объект. Например, оператор document.write("ABCDEF".slice(2,-1)) выведет на экран обозревателя строку CDE .

Метод small

Синтаксис : объект .small() Результат : строковое значение

Метод small возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста мелким шрифтом. Например, оператор document.write("Мой текст".small()) выведет на экран обозревателя строку Мой текст.

Метод split

Синтаксис : объект .split(разделитель [,число ]?) Аргументы : разделитель — строковое или регулярное выражение число — числовое выражение Результат : массив строк (объект Array )

Метод split разбивает примитивное значение объекта на массив подстрок и возвращает его. Разбиение на подстроки производится следующим образом. Исходная строка просматривается слева направо в поисках разделителя . Как только он найден, подстрока от конца предыдущего разделителя (или от начала строки, если это первое вхождение разделителя) до начала найденного добавляется в массив подстрок. Таким образом, сам разделитель в текст подстроки не попадает.

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

Разделитель может быть задан либо строкой, либо регулярным выражением. Существует несколько случаев, требующих особого рассмотрения:

В следующем примере регулярное выражение используется для задания тегов HTML в качестве разделителя. Оператор

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

Метод strike

Синтаксис : объект .strike() Результат : строковое значение

Метод strike возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста перечеркнутым шрифтом. Например, оператор document.write("Мой текст".strike()) выведет на экран обозревателя строку Мой текст.

Метод sub

Синтаксис : объект .sub() Результат : строковое значение

Метод sub возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста как нижнего индекса. Например, оператор document.write("Мой текст".sub()) выведет на экран обозревателя строку Мой текст.

Метод substr

Синтаксис : объект .substr(позиция [,длина ]?) Аргументы : позиция и длина — числовые выражения Результат : строковое значение

Метод substr возвращает подстроку примитивного значения строкового объекта , начинающуюся с данной позиции и содержащую длина символов. Если длина не задана, то возвращается подстрока, начиная с данной позиции и до конца исходной строки. Если длина отрицательна или равна нулю, то возвращается пустая строка.

Позиции символов строки нумеруются от нуля до объект . -1. Если позиция больше или равна объект ., то возвращается пустая строка. Если позиция отрицательна, то она трактуется как смещение от конца строки, т. е. заменяется на объект .+позиция .

Примечание . Если позиция отрицательна, то Internet Explorer ошибочно заменяет ее на 0, поэтому в целях совместимости этот вариант использовать не следует.

Var src = "abcdef"; var s1 = src.substr(1, 3); // "bcd" var s2 = src.substr(1); // "bcdef" var s3 = src.substr(-1); // "f", но в MSIE: "abcdef"

Метод substring

Синтаксис : объект .substring(начало [,конец ]) Аргументы : начало и конец — числовые выражения Результат : строковое значение

Метод substring возвращает подстроку примитивного значения строкового объекта , от позиции начало до позиции конец , не включая ее. Если конец не задан, то возвращается подстрока, начиная с позиции начало и до конца исходной строки.

Позиции символов строки нумеруются от нуля до объект . -1. Отрицательные аргументы или равные NaN заменяются на нуль; если аргумент больше длины исходной строки, то он заменяется на нее. Если начало больше конца , то они меняются местами. Если начало равно концу , то возвращается пустая строка.

Результатом является строковое значение, а не строковый объект. Примеры:

Var src = "abcdef"; var s1 = src.substring(1, 3); // "bc" var s2 = src.substring(1, -1); // "a" var s3 = src.substring(-1, 1); // "a"

Метод sup

Синтаксис : объект .sup() Результат : строковое значение

Метод sup возвращает строку, состоящую из примитивного значения строкового объекта , заключенного в теги … . Проверки на то, не была ли исходная строка уже заключена в эти теги, не делается. Этот метод используется совместно с методами document.write и document.writeln для отображения текста как верхнего индекса. Например, оператор document.write("Мой текст".sup()) выведет на экран обозревателя строку Мой текст.

Метод toLocaleLowerCase

Синтаксис : объект .toLocaleLowerCase() Результат : новая строка

Поддержка : Internet Explorer Поддерживается с версии 5.5. Netscape Navigator Не поддерживается.

Метод toLocaleLowerCase возвращает новую строку, в которой все буквы исходной строки заменены на строчные с учетом национальных установок операционной системы. Остальные символы исходной строки не изменяются. Исходная строка остается прежней. Обычно этот метод возвращает тот же результат, что и ; отличие возможно только в том случае, если кодировка языка противоречит правилам Unicode по преобразованию прописных букв в строчные.

Метод toLocaleUpperCase

Синтаксис : объект .toLocaleUpperCase() Результат : новая строка

Поддержка : Internet Explorer Поддерживается с версии 5.5. Netscape Navigator Не поддерживается.

Метод toLocaleUpperCase возвращает новую строку, в которой все буквы исходной строки заменены на прописные с учетом национальных установок операционной системы. Остальные символы исходной строки не изменяются. Исходная строка остается прежней. Обычно этот метод возвращает тот же результат, что и ; отличие возможно только в том случае, если кодировка языка противоречит правилам Unicode по преобразованию строчных букв в прописные.

Метод toLowerCase

Синтаксис : объект .toLowerCase() Результат : новая строка

Метод toLowerCase возвращает новую строку, в которой все буквы исходной строки заменены на строчные. Остальные символы исходной строки не изменяются. Исходная строка остается прежней. Например, оператор document.write("объект String".toLowerCase()) выведет на экран обозревателя строку объект string .

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: