JavaScript Методы строк
Методы строк помогают работать со строками.
Методы строк и свойства
Примитивные значения, такие как "Щипунов Андрей", не могут иметь свойств или методов (потому что они не являются объектами).
Но с помощью JavaScript методы и свойства также доступны для примитивных значений, поскольку JavaScript обрабатывает примитивные значения как объекты при выполнении методов и свойств.
Длина строки
Свойство length
возвращает длину строки:
Поиск строки в строке
Метод indexOf()
возвращает индекс (положение) на
first
вхождения указанного текста в строке:
Пример
var str = "Пожалуйста, найдите, где происходит 'размещение'!";
var pos = str.indexOf("размещение");
Попробуйте сами »
JavaScript считает позиции с нуля.
0 - первая позиция в строке, 1 - вторая, 2 - третья ...
Метод lastIndexOf()
возвращает индекс
последнего вхождения указанного текста в строке:
Пример
var str = "Пожалуйста, найдите, где происходит 'размещение'!";
var pos = str.lastIndexOf("размещение");
Попробуйте сами »
Оба indexOf()
, и lastIndexOf()
возвращают -1, если текст не найден.
Пример
var str = "Пожалуйста, найдите, где происходит 'размещение'!";
var pos = str.lastIndexOf("размещение");
Попробуйте сами »
Оба метода принимают второй параметр в качестве начальной позиции для поиска:
Пример
var str = "Пожалуйста, найдите, где происходит 'размещение'!";
var pos = str.indexOf("размещение", 15);
Попробуйте сами »
Эти lastIndexOf()
методы выполняют поиск в обратном направлении (от конца к началу),
что означает: если второй параметр равен 15
,
поиск начинается с позиции 15 и выполняется поиск до начала строки.
Пример
var str = "Пожалуйста, найдите, где происходит 'размещение'!";
var pos = str.lastIndexOf("размещение", 15);
Попробуйте сами »
Поиск строки в строке
В search()
методе ищет строку для указанного значения и возвращает позицию матча:
Пример
var str = "Пожалуйста, найдите, где происходит 'размещение'!";
var pos = str.search("размещение");
Попробуйте сами »
Ты заметил?
Два метода, indexOf()
и search()
, равны?
Они принимают одни и те же аргументы (параметры) и возвращают одно и то же значение?
Эти два метода НЕ равны. Вот отличия:
- Метод
search()
не может принимать второй аргумент позиции начала. - Метод
indexOf()
не может принимать мощные значения поиска (регулярные выражения).
Вы узнаете больше о регулярных выражениях в следующей главе.
Извлечение строчных частей
Есть 3 метода извлечения части строки:
slice(start, end)
substring(start, end)
substr(start, length)
Метод slice()
Метод slice()
извлекает часть строки и возвращает извлеченную часть в новой строке.
Метод принимает 2 параметра: начальную позицию и конечную позицию (конец не включен).
В этом примере часть строки вырезается из позиции 7 в позицию 12 (13-1):
Пример
var str = "Яблоко, Банан, Киви";
var res = str.slice(7, 13);
Результатом res будет:
Банан
Помните: JavaScript считает позиции с нуля. Первая позиция - 0.
Если параметр отрицательный, позиция отсчитывается от конца строки
В этом примере часть строки вырезается из позиции -12 в позицию -6:
Пример
var str = "Яблоко, Банан, Киви";
var res = str.slice(-12, -6);
Результатом res будет:
Банан
Если вы опустите второй параметр, метод вырежет остальную часть строки:
или, считая с конца:
Отрицательные позиции не работают в Internet Explorer 8 и ранее.
Метод substring()
Метод substring()
похоже на slice()
.
Разница в том, что substring()
не может принимать отрицательные индексы.
Пример
var str = "Яблоко, Банан, Киви";
var res = str.substring(7, 13);
Результатом res будет:
Банан
Если вы опустите второй параметр, substring()
оставшаяся часть строки будет вырезана.
Метод substr()
Метод substr()
похоже на slice()
.
Разница в том, что второй параметр указывает длину извлеченной части.
Пример
var str = "Яблоко, Банан, Киви";
var res = str.substr(7, 6);
Результатом res будет:
Банан
Если вы опустите второй параметр, substr()
оставшаяся часть строки будет вырезана.
Пример
var str = "Яблоко, Банан, Киви";
var res = str.substr(7);
Результатом res будет:
Банан, Киви
Если первый параметр отрицательный, позиция отсчитывается от конца строки.
Пример
var str = "Яблоко, Банан, Киви";
var res = str.substr(-4);
Результатом res будет:
Киви
Замена содержимого строки
Метод replace()
заменяет указанное значение с другим значением в строке:
Пример
str = "Пожалуйста, посетите Microsoft!";
var n = str.replace("Microsoft", "Schoolsw3");
Попробуйте сами »
Метод replace()
не изменяет строку она вызвана. Он возвращает новую строку.
По умолчанию replace()
метод заменяет только первое совпадение:
Пример
str = "Пожалуйста, посетите Microsoft и Microsoft!";
var n = str.replace("Microsoft", "Schoolsw3");
По умолчанию replace()
метод чувствителен к регистру.
Записать MICROSOFT (в верхнем регистре) не получится:
Пример
str = "Пожалуйста, посетите Microsoft!";
var n = str.replace("MICROSOFT", "Schoolsw3");
Чтобы заменить нечувствительность к регистру, используйте регулярное выражение
с /i
флагом (нечувствительность):
Пример
str = "Пожалуйста, посетите Microsoft!";
var n = str.replace(/MICROSOFT/i, "Schoolsw3");
Обратите внимание, что регулярные выражения пишутся без кавычек.
Чтобы заменить все совпадения, используйте регулярное выражение
с /g
флагом (глобальное совпадение):
Пример
str = "Пожалуйста, посетите Microsoft и Microsoft!";
var n = str.replace(/Microsoft/g, "Schoolsw3");
Вы узнаете намного больше о регулярных выражениях в главе Регулярные выражения JavaScript.
Преобразование в верхний и нижний регистр
Строка преобразуется в верхний регистр с помощью toUpperCase()
:
Пример
var text1 = "Привет, мир!"; // Строка
var text2 = text1.toUpperCase(); // text2 к text1, преобразованный в верхний
Попробуйте сами »
Строка преобразуется в нижний регистр с помощью toLowerCase()
:
Пример
var text1 = "Привет, мир!"; // Строка
var text2 = text1.toLowerCase(); // text2 к text1, преобразованный в нижний
Попробуйте сами »
Метод concat()
Метод concat()
объединяет две или более строк:
Пример
var text1 = "Привет";
var text2 = "Мир";
var text3 = text1.concat(" ", text2);
Попробуйте сами »
Этот concat()
метод можно использовать вместо оператора плюс.
Эти две строки делают то же самое:
Пример
var text = "Привет" + " " + "Мир!";
var text = "Привет".concat(" ", "Мир!");
Все строковые методы возвращают новую строку. Они не изменяют исходную строку.
Формально сказано: строки неизменяемы: строки нельзя изменить, их можно только заменить.
Метод trim()
Метод trim()
удаляет пробельные символы с обеих сторон строки:
Этот trim()
метод не поддерживается в Internet Explorer 8 и ниже.
Если вам нужна поддержка IE 8, вы можете использовать
replace()
вместо этого регулярное выражение:
Пример
var str = " Привет, мир! ";
alert(str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''));
Попробуйте сами »
Вы также можете использовать решение замены выше,
чтобы добавить функцию обрезки в JavaScript String.prototype
:
Пример
if (!String.prototype.trim) {
String.prototype.trim =
function () {
return
this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
var str = " Привет, мир! ";
alert(str.trim());
Попробуйте сами »
Извлечение строковых символов
Есть 3 метода извлечения строковых символов:
charAt(position)
charCodeAt(position)
- Property access [ ]
Метод charAt()
Метод charAt()
возвращает символ по указанному индексу (позиции) в строке:
Метод charCodeAt()
Метод charCodeAt()
возвращает юникод символа в заданном индексе в строке:
Метод возвращает код UTF-16 (целое число от 0 до 65535).
Доступ к свойствам
ECMAScript 5 (2009) разрешает доступ к свойствам [ ] для строк:
Доступ к свойствам может быть немного непредсказуемым:
- Не работает в Internet Explorer 7 или более ранней версии.
- Это делает строки похожими на массивы (но это не так)
- Если символ не найден, [] возвращает значение undefined, а charAt () возвращает пустую строку.
- Он доступен только для чтения. str [0] = "A" не выдает ошибки (но не работает!)
Пример
var str = "ПРИВЕТ МИР";
str[0] = "A";
// Не дает никакой ошибки, но и не работает
str[0]; // возвращается П
Попробуйте сами »
Если вы хотите работать со строкой как с массивом, вы можете преобразовать ее в массив.
Преобразование строки в массив
Строку можно преобразовать в массив с помощью split() split()
:
Пример
var txt = "a,b,c,d,e"; // Строка
txt.split(","); // Разделение на запятые
txt.split(" "); // Разделение на пробелы
txt.split("|"); // Разделение на трубы
Попробуйте сами »
Если разделитель опущен, возвращаемый массив будет содержать всю строку в индексе [0].
Если разделитель "", возвращаемый массив будет массивом одиночных символов:
Полная ссылка на строку
Для получения полной справки перейдите к нашей полной справке по строкам JavaScript.
Справочник содержит описания и примеры всех свойств и методов строк.