- String.prototype.endsWith()
- Try it
- Syntax
- Parameters
- Return value
- Exceptions
- Description
- Examples
- Using endsWith()
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- Начало строки ^ и конец $
- Строки
- Длина строки
- Повторение строки
- Поиск в строке
- Выбор подстроки
- Substring
- slice
- Управление регистром
- Получение символа по индексу
- Удаление пробелов
- Объединение строк
- Замена подстроки
- Разделение строки
- Проверка начала и окончания строки
- Зполнение строки
String.prototype.endsWith()
The endsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.
Try it
Syntax
endsWith(searchString) endsWith(searchString, endPosition)
Parameters
The characters to be searched for at the end of str . Cannot be a regex. All values that are not regexes are coerced to strings, so omitting it or passing undefined causes endsWith() to search for the string «undefined» , which is rarely what you want.
The end position at which searchString is expected to be found (the index of searchString ‘s last character plus 1). Defaults to str.length .
Return value
true if the given characters are found at the end of the string, including when searchString is an empty string; otherwise, false .
Exceptions
Description
This method lets you determine whether or not a string ends with another string. This method is case-sensitive.
Examples
Using endsWith()
const str = "To be, or not to be, that is the question."; console.log(str.endsWith("question.")); // true console.log(str.endsWith("to be")); // false console.log(str.endsWith("to be", 19)); // true
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on Apr 6, 2023 by MDN contributors.
Your blueprint for a better internet.
Начало строки ^ и конец $
Материал на этой странице устарел, поэтому скрыт из оглавления сайта.
Более новая информация по этой теме находится на странице https://learn.javascript.ru/regexp-anchors.
Знак каретки ‘^’ и доллара ‘$’ имеют в регулярном выражении особый смысл. Их называют «якорями» (anchor – англ.).
Каретка ^ совпадает в начале текста, а доллар $ – в конце.
Якоря являются не символами, а проверками.
До этого мы говорили о регулярных выражениях, которые ищут один или несколько символов. Если совпадение есть – эти символы включаются в результат.
А якоря – не такие. Когда поиск ходит до якоря – он проверяет, есть ли соответствие, если есть – продолжает идти по шаблону, не прибавляя ничего к результату.
Каретку ^ обычно используют, чтобы указать, что регулярное выражение необходимо проверить именно с начала текста.
Например, без каретки найдёт все числа:
var str = '100500 попугаев съели 500100 бананов!'; alert( str.match(/\d+/ig) ); // 100500, 500100 (нашло все числа)
А с кареткой – только первое:
var str = '100500 попугаев съели 500100 бананов!'; alert( str.match(/^\d+/ig) ); // 100500 (только в начале строки)
Знак доллара $ используют, чтобы указать, что паттерн должен заканчиваться в конце текста.
Аналогичный пример с долларом для поиска числа в конце:
var str = '100500 попугаев съели 500100'; alert( str.match(/\d+$/ig) ); // 500100
Оба якоря используют одновременно, если требуется, чтобы шаблон охватывал текст с начала и до конца. Обычно это требуется при валидации.
Например, мы хотим проверить, что в переменной num хранится именно десятичная дробь.
Ей соответствует регэксп \d+\.\d+ . Но простой поиск найдёт дробь в любом тексте:
var num = "ля-ля 12.34"; alert( num.match(/\d+\.\d+/ig) ); // 12.34
Наша же задача – проверить, что num целиком соответствует паттерну \d+\.\d+ .
Для этого обернём шаблон в якоря ^. $ :
var num = "ля-ля 12.34"; alert( num.match(/^\d+\.\d+$/ig) ); // null, не дробь var num = "12.34"; alert( num.match(/^\d+\.\d+$/ig) ); // 12.34, дробь!
Теперь поиск ищет начало текста, за которым идёт число, затем точка, ещё число и конец текста. Это как раз то, что нужно.
Строки
Для создания строк мы можем как напрямую присваивать переменной или константе строку:
Для работы со строками предназначен объект String , поэтому также можно использовать конструктор String:
const name = new String("Tom");
Но как правило, используется первый более краткий способ. В первом случае JavaScript при необходимости автоматически преобразует переменную примитивного типа в объект String.
Объект String имеет большой набор свойств и методов, с помощью которых мы можем манипулировать строками.
Длина строки
Свойство length указывает на длину строки:
const hello = "привет мир"; console.log(`В строке "$" $ символов`); // В строке "привет мир" 10 символов
Повторение строки
Метод repeat() позволяет создать строку путем многократного повторения другой строки. Количество повторов передается в качестве аргумента:
const hello = "hello "; console.log(hello.repeat(3)); // hello hello hello
Поиск в строке
Для поиска в строке некоторой подстроки используются методы indexOf() (индекс первого вхождения подстроки) и lastIndexOf() (индекс последнего вхождения подстроки). Эти методы принимают два параметра:
- Подстроку, которую надо найти
- Необязательный параметр, который указывает, с какого символа следует проводить поиск подстроки в строке
Оба этих метода возвращают индекс символа, с которого в строке начинается подстрока. Если подстрока не найдена, то возвращается число -1.
const hello = "привет мир. пока мир"; const key = "мир"; const firstPos = hello.indexOf(key); const lastPos = hello.lastIndexOf(key); console.log("Первое вхождение: ", firstPos); // 7 console.log("Последнее вхождение: ", lastPos); // 17
Еще один метод — includes() возвращает true, если строка содержит определенную подстроку.
const hello = "привет мир. пока мир"; console.log(hello.includes("мир")); // true console.log(hello.includes("миг")); // false
С помощью второго дополнительного параметра можно определить индекс, с которого будет начинаться поиск подстроки:
const hello = "привет мир. пока мир"; console.log(hello.includes("мир", 5)); // true console.log(hello.includes("привет", 6)); // false
Выбор подстроки
Для того, чтобы вырезать из строки подстроку, применяются методы substring() и slice() .
Substring
Метод substring() принимает два параметра:
- индекс символа в строке, начиная с которого надо проводить обрезку строки. Обязательный параметр
- индекс, до которого надо обрезать строку. Необязательный параметра — если он не указан, то обрезается вся остальная часть строки
const hello = "привет мир. пока мир"; const world = hello.substring(7, 10); // с 7-го по 10-й индекс console.log(world); // мир const bye = hello.substring(12); // c 12 индекса до конца строки console.log(bye); // пока мир
slice
Еще один метод slice также позволяет получить из строки какую-то ее часть. Она принимает два параметра:
- индекс символа в строке, начиная с которого надо проводить обрезку строки. Обязательный параметр
- индекс, до которого надо обрезать строку. Необязательный параметра — если он не указан, то обрезается вся остальная часть строки
const hello = "привет мир. пока мир"; const world = hello.slice(7, 10); // с 7-го по 10-й индекс console.log(world); // мир const bye = hello.slice(12); // c 12 индекса до конца строки console.log(bye); // пока мир
Можно заметить, что этот метод похож на метод substring() , тем не менее между ними есть небольшие различие. Прежде всего, в slice() начальный индекс должен быть меньше чем конечный. В substring() , если начальный индекс больше конечного, то они меняются местами (то есть substring(5, 1) будет равноценно substring(1, 5) ):
const hello = "привет мир. пока мир"; const world1 = hello.slice(6, 0); // console.log(world1); // const world2 = hello.substring(6, 0); // аналогично hello.substring(0, 6) console.log(world2); // привет
Другое отличие, что slice позволяет использовать отрицательные индексы. Отрицательный индекс указывает на индекс символа относительно конца строки. substring() же отрицательные индексы не поддерживает:
const hello = "привет мир. пока мир"; const bye1 = hello.slice(-8, -4); // с 8-го индекса с конца до 4 индекса с конца console.log(bye1); // const bye2 = hello.substring(-8, -4); // не работает console.log(bye2); //
Управление регистром
Для изменения регистра имеются методы toLowerCase() (для перевода в нижний регистр) и toUpperCase() (для перевода в верхний регистр).
const hello = "Привет Том"; console.log(hello.toLowerCase()); // привет том console.log(hello.toUpperCase()); // ПРИВЕТ ТОМ
Получение символа по индексу
Чтобы получить определенный символ в строке по индексу, можно применять методы charAt() и charCodeAt() . Оба этих метода в качестве параметра принимают индекс символа:
const hello = "Привет Том"; console.log(hello.charAt(2)); // и console.log(hello.charCodeAt(2)); // 1080
Но если в качестве результата метод charAt() возвращает сам символ, то метод charCodeAt() возвращает числовой код этого символа.
Удаление пробелов
Для удаления начальных и концевых пробелов в стоке используется метод trim() :
let hello = " Привет Том "; const beforeLength = hello.length; hello = hello.trim(); const afterLength = hello.length; console.log("Длина строки до: ", beforeLength); // 15 console.log("Длина строки после: ", afterLength); // 10
Дополнительно есть ряд методов, которые удаляют пробелы с определенной стороны строки:
- trimStart() : удаляет пробел с начала строки
- trimEnd() : удаляет пробел с конца строки
- trimLeft() : удаляет пробел с левой части строки
- trimRight() : удаляет пробел с правой части строки
Объединение строк
Метод concat() объединяет две строки:
let hello = "Привет "; let world = "мир"; hello = hello.concat(world); console.log(hello); // Привет мир
Замена подстроки
Метод replace() заменяет первое вхождение одной подстроки на другую:
let hello = "Добрый день"; hello = hello.replace("день", "вечер"); console.log(hello); // Добрый вечер
Первый параметр метода указывает, какую подстроку надо заменить, а второй параметр — на какую подстроку надо заменить.
В то же время у этого метода есть одна особенность — он заменяет только первое вхождение подстроки:
let menu = "Завтрак: каша, чай. Обед: суп, чай. Ужин: салат, чай."; menu = menu.replace("чай", "кофе"); console.log(menu); // Завтрак: каша, кофе. Обед: суп, чай. Ужин: салат, чай.
Однако еще один метод — replaceAll() позволяет заменить все вхождения подстроки:
let menu = "Завтрак: каша, чай. Обед: суп, чай. Ужин: салат, чай."; menu = menu.replaceAll("чай", "кофе"); console.log(menu); // Завтрак: каша, кофе. Обед: суп, кофе. Ужин: салат, кофе.
Разделение строки
Метод split() разбивает строку на массив подстрок по определенному разделителю. В качестве разделителя используется строка, которая передается в метод:
const message = "Сегодня была прекрасная погода"; const messageParts = message.split(" "); console.log(messageParts); // ["Сегодня", "была", "прекрасная", "погода"]
В данном случае строка разделяется по проблему, то есть в итоге в массиве messageParts окажется четыре элемента.
Проверка начала и окончания строки
Метод startsWith() возвращает true, если строка начинается с определенной подстроки. А метод endsWith() возвращает true, если строка оканчивается на определенную подстроку.
const hello = "let me speak from my heart"; console.log(hello.startsWith("let")); // true console.log(hello.startsWith("Let")); // false console.log(hello.startsWith("lets")); // false console.log(hello.endsWith("heart")); // true console.log(hello.startsWith("bart")); // false
При этом играет роль регистр символов, и из примера выше мы видим, что «let» не эквивалентно «Let».
Дополнительный второй параметр позволяет указать индекс (для startsWith — индекс с начала, а для endsWith — индекс с конца строки), относительно которого будет производиться сравнение:
const hello = "let me speak from my heart"; console.log(hello.startsWith("me", 4)); // true, "me" - 4 индекс с начала строки console.log(hello.startsWith("my", hello.length-8)); // true, "my" - 8 индекс с конца
Зполнение строки
Методы padStart() и padEnd() растянуть строку на определенное количество символов и заполнить строку слева и справа соответственно.
let hello = "hello".padStart(8); // " hello" console.log(hello); hello = "hello".padEnd(8); // "hello " console.log(hello);
Вызов «hello».padStart(8) будет рястягивать строку «hello» на 8 символов. То есть изначально в строке «hello» 5 символов, значит, к ней будет добавлено 3 символа. При чем они будут добавлено в начале строки. По умолчанию добавляемые символы представляют пробелы. Аналогично вызов «hello».padEnd(8) растянет строку на 8 символов, но оставшие символы в виде пробелов будут добавлены в конец строки.
По умолчанию эти методы используют пробелы для заполнения, но в качестве второго параметра мы можем передать методам значение, которым надо дополнить строку:
let hello = "hello".padStart(17, "JavaScript, "); // "JavaScript, hello" hello = "hello".padEnd(12, " Eugene"); // "hello Eugene"
Если добавляемое количество символов больше добавляемой строки, то добавляемая строка повторяется:
let hello = "123".padStart(6, "0"); // "000123" hello = "123".padEnd(6, "0"); // "123000"