Любые текстовые данные в JavaScript считаются строками. Это примитивный тип, но язык позволяет работать с ним так, будто он является объектом. В том числе — использовать встроенные в JS методы строк, которые собраны в этой шпаргалке.
Важно: при использовании методов создаётся новая строка, которая записывается в ту же переменную вместо старой строки.
1
Как изменить регистр
toLowerCase
Преобразует символы в строке в нижний регистр.
"Hello Tproger".toLowerCase(); // "hello tproger"
toUpperCase
Преобразует символы в строке в верхний регистр.
"Hello Tproger".toUpperCase(); // "HELLO TPROGER"
2
Как объединить строки
concat
Объединяет две или более строки и возвращает одну строку.
"Hello".concat(" Tproger"); // "Hello Tproger"
"Hello".concat(" T", "p", "r", "o", "g", "e", "r"); // "Hello Tproger"
3
Как разделить строку на подстроки
split
Разбивает строку в массив по указанному разделителю, которым может быть подстрока или регулярное выражение. Вторым параметром можно указать ограничитель.
// Получаем каждый символ
"Hello Tproger".split(""); // ["H", "e", "l", "l", "o", " ", "T", "p", "r", "o", "g", "e", "r"]
// Получаем каждое слово из строки
"Hello Tproger".split(" "); //["Hello", "Tproger"]
// Устанавливаем ограничитель
"Hello Tproger".split(" ", 1); //["Hello"]
4
Как повторить строку
repeat
Принимает в качестве параметра число и повторяет строку указанное количество раз.
"Tproger ".repeat(3); // "Tproger Tproger Tproger "
5
Как найти подстроку
charAt
Возвращает символ по указанному индексу.
"Hello Tproger".charAt(); // "H"
includes
Проверяет, содержит ли строка указанную подстроку. Возвращает значение true или false. Вторым параметром можно указать позицию в строке, с которой следует начать поиск.
"Hello Tproger".includes("Tproger"); // true
"Hello Tproger".includes("Hello", 1); // false
indexOf
Возвращает индекс первого найденного вхождения указанного значения. Поиск ведётся от начала до конца строки. Если совпадений нет, возвращает -1. Вторым параметром можно передать позицию, с которой следует начать поиск.
"Hello World".indexOf("o"); // 4
"Hello World".indexOf("o", 5); // 7
lastIndexOf
Возвращает индекс последнего найденного вхождения указанного значения. Поиск ведётся от конца к началу строки. Если совпадений нет, возвращает -1. Вторым параметром можно передать позицию, с которой следует начать поиск.
"Hello World".lastIndexOf("o"); // 7
"Hello World".lastIndexOf("o", 5); // 4
endsWith
Проверяет, заканчивается ли строка символами, заданными первым параметром. Возвращает true или false. Есть второй необязательный параметр — ограничитель по диапазону поиска. По умолчанию он равен длине строки.
"Hello Tproger".endsWith("Tproger"); // true
"Hello Tproger".endsWith("Tproger", 12); // false
startsWith
Проверяет, начинается ли строка с указанных символов. Возвращает true или false. Вторым параметром можно указать индекс, с которого следует начать проверку.
"Hello Tproger".startsWith("Hello"); // true
"Hello Tproger".startsWith("Hello", 1); // false
search
Проверяет, есть ли в строке указанное значение или регулярное выражение и возвращает индекс начала совпадения.
"hi, hello, hey".search("hello"); // 4
6
Как извлечь подстроку
slice
Извлекает часть строки и возвращает новую строку. Обязательный параметр — начало извлечения. Вторым параметром можно установить границу (по умолчанию — до конца строки).
"Методы строк на Tproger".slice(16); // "Tproger"
"Методы строк на Tproger".slice(16, 21); // "Tprog"
// Отрицательные значения тоже работают
"Методы строк на Tproger".slice(-7); // "Tproger"
"Методы строк на Tproger".slice(-7, -2); // "Tprog"
substring
Извлекает символы из строки между двумя указанными индексами. Второй индекс указывать не обязательно. В таком случае будут извлечены все символы от начала до конца строки. В отличие от slice, можно задавать start больше, чем end. Отрицательные значения не поддерживаются, они интерпретируются как 0.
"Методы строк на Tproger".substring(5, 2); // "тод"
substr
Извлекает часть строки указанной длины. Первым параметром принимает стартовую позицию, вторым — длину. Значение первого параметра может быть отрицательным, тогда позиция определяется с конца строки.
"Методы строк на Tproger".substr(7, 5); // "строк"
"Методы строк на Tproger".substr(-7, 5); // "Tprog"
7
Как заменить подстроку
replace
Ищет в строке указанное значение или регулярное выражение и возвращает новую строку, в которой выполнена замена на второй параметр. Можно заменить найденные значения другой строкой или передать функцию для работы над совпадениями.
"hi, hello, hi".replace("hi", "hey"); // "hey, hello, hi"
"hi, hello, hi".replace(/hi/g, "hey"); // "hey, hello, hey"
replaceAll
Даёт такой же результат, как метод replace() с глобальным флагом g. Заменяет все найденные совпадения другой строкой или переданной функцией.
"hi, hello, hi".replaceAll("hi", "hey"); // "hey, hello, hey"
8
Как добавить в строку пробелы или другие символы
padEnd
Добавляет в конце отступы, пока строка не достигнет длины, заданной первым параметром. Вторым параметром можно указать другой символ вместо пробела.
"Hello Tproger".padEnd(20, "*"); // "Hello Tproger*******"
padStart
Добавляет в начале отступы, пока строка не достигнет длины, заданной первым параметром. Вторым параметром можно указать другой символ вместо пробела.
"Hello Tproger".padStart(20, "*"); // "*******Hello Tproger"
9
Как удалить пробелы в строке
trim
Обрезает пробелы с обоих концов строки.
" Hello Tproger ".trim(); // "Hello Tproger"
trimEnd
Обрезает пробелы в конце строки
" Hello Tproger ".trimEnd(); // " Hello Tproger"
trimStart
Обрезает пробелы в начале строки
" Hello Tproger ".trimStart(); // "Hello Tproger "
10
Как работать с Юникодом
charCodeAt
Возвращает числовое значение Юникода по указанному индексу. Обратите внимание: у букв в верхнем и нижнем регистрах разные коды.
"T".charCodeAt() // 84
"t".charCodeAt() // 116
fromCharCode
Преобразует числовые значения Юникода в читаемые символы.
String.fromCharCode(72, 101, 108, 108, 111); // "Hello"
Примечание: при работе с эмодзи, редкими математическими символами, иероглифами нужно помнить о суррогатных парах. Это символы, которые записываются двумя 16-битными словами. Длина таких строк — 2.
'?'.length; // 2, редкий китайский иероглиф
Суррогатные пары не учитывались при создании JS и методы строк charCodeAt / fromCharCode обрабатывают их некорректно. Правильно работают с суррогатными парами редкие методы String.fromCodePoint и str.codePointAt, которые появились в языке недавно.
Для работы со строками в JS есть не только встроенные методы, но и сторонние библиотеки. Они решают задачи более сложные задачи. Но подключать их имеет смысл только в том случае, если возможностей встроенных методов действительно не хватает.
При составлении этой шпаргалки я пользовался «Современным учебником JavaScript» Ильи Кантора и документацией MDN.
Больше полезных материалов по JS:
- Шпаргалка по современному JavaScript
- Примеры задач по JavaScript для подготовки джуна к собеседованию по фронтенду
Строки — это последовательность символов в языке JavaScript. Например:
const a = 'lorem ipsum';
var b = "съешь ещё этих мягких французских булок, да выпей чаю";
Здесь мы задали переменную a
и присвоили ей текстовое значение lorem ipsum
, а переменной b
присвоили значение съешь ещё этих мягких французских булок, да выпей чаю
.
Кавычки
Если вы хотите задать строку, то нужно использовать одинарные или двойные кавычки. Возьмем код из предыдущего примера:
const a = 'lorem ipsum';//одинарные кавычки
var b = "съешь ещё этих мягких французских булок, да выпей чаю";//двойные кавычки
Вместо кавычек из примера можно использовать обратные кавычки. Например:
var b = `съешь ещё этих мягких французских булок, да выпей чаю`;//обратные кавычки
У обратных кавычек есть особенности:
- В них можно оборачивать выражение типа
${}
. - Выражения в них можно записывать на нескольких строках кода.
- В них можно задавать функцию вида func
`string`
.
Если в строке есть кавычки, то их экранируют с помощью слеша. Это делают для того, чтобы при выводе кавычки были частью строки.
В одинарных кавычках экранируют одинарные кавычки. В двойных кавычках экранируют двойные кавычки. Символ слеша тоже экранируется.
Например:
var str = "I'm a JavaScript "programmer" ";
alert( str ); // I'm a JavaScript "programmer"
var str = ' символ \ ';
alert( str ); // символ
Спецсимволы
Спецсимволы начинаются с обратного слеша – . И каждый имеет свое предназначение. Рассмотрим их.
Спецсимвол | Описание |
n | Перевод строки |
‘, “ | Кавычки |
t | Табуляция |
xXX | Символ в Юникоде, например: u00A9 — то же самое, что © |
uXXXX | Символ в UTF-8, например: u00A9 — то же самое, что © |
Длина строки length
Вы можете получить длину строки с помощью свойства length
.
Например:
var str = 'lorem ipsum'.length;// получается 11, знак пробела тоже считается
Обратите внимание, что после length
нет скобок. Скобки используют при работе с числовыми значениями.
Доступ к символам
Получить символ из определенной позиции в строке можно с помощью квадратных скобок [ ]
:
var str = 'lorem ipsum';
console.log(str[0]);//выведет l
console.log(str[100]);//выведет undefined, потому что в позиции 100 нет символов
Строку можно перебрать посимвольно с помощью цикла for…of
, который мы используем для перебора массива:
for (let char of "lorem ipsum") {
console.log(char);
};
Строки неизменяемы
Если строку создали, то её нельзя изменить:
let str = 'lorem ipsum';
str[0] = 'L'; // команда не работает, потому что мы попытались на место первого символа вставит другой
console.log( str[0] ); // l
Чтобы изменить строку, можно создать новую строку и присоединить к ней другую строку или её часть:
let str = 'ok';// Имеем строку
str = 'O' + str[1]; // Создаем новую строку `O` и присоединяем к ней второй символ из строки str
console.log( str ); // Ok
Поиск подстроки
Подстрока – это часть строки. Например, в строке 'lorem ipsum'
можно найти две подстроки: 'lorem'
и 'ipsum'
, а можно найти две подстроки 'm'
.
Рассмотрим способы поиска.
Метод str.indexOf
Ищет подстроку и ее позицию. Синтаксис такой: str.indexOf(substr, pos)
. Substr
— подстрока, pos
— позиция строки.
Pos
принимает значение позиции, на которой находится подстрока или значение — 1
, если подстроки нет:
let str = 'lorem ipsum';
console.log(str.indexOf('sum'));//начинается с позиции 8
console.log(str.indexOf('Sum'));//— 1
console.log(str.indexOf('m'));//на позиции 4
Чтобы найти все подстроки 'm'
в строке 'lorem ipsum'
, используют цикл:
let str = 'lorem ipsum';
let target = 'm'; // цель поиска
let pos = 0;
while (true) {
let foundPos = str.indexOf(target, pos);
if (foundPos == — 1) break;
alert( `Искомая подстрока на позиции: ${foundPos}` );
pos = foundPos + 1; // продолжаем со следующей позиции
};
Методы includes, startsWith, endsWith
Метод includes
возвращает true
, если подстрока есть и false
, если подстроки нет:
let str = 'lorem ipsum';
console.log( str.includes("m") ); // true
console.log( str.includes("v") ); // false
Методы startsWith
и endsWith
определяют, начинается или и заканчивается строка определённой подстрокой:
let str = 'lorem ipsum';
console.log( str.startsWith("lo") ); // true
console.log( str.endsWith("un") ); // false
Получение подстроки
Чтобы получить подстроку, можно использовать 3 метода: substring
, substr
и slice
.
Метод substring
используют, чтобы получить подстроку. Её конец и начало определяются индексами, которые указывают в скобках.
Синтаксис такой: str.substring(start [, end])
, где start
— начальное значение строки, end
— конечное значение строки и в подстроку не включается.
Например:
let str = 'lorem ipsum';
console.log( str.substring(0, 4) );\lore 0 — l, 1 — o, 2 — r, 3 — e, 4 — хоть и обозначается в коде, но значение строки не возвращает.
В этом методе начало строки можно задать большим числом, нежели конец строки. Тогда метод сам поменяет числа местами и вернет правильное значение подстроки:
let str = 'lorem ipsum';
// для substring эти два примера — одинаковы
console.log( str.substring(0, 4) ); // lore первое и последнее значение может быть указан в любом порядке
console.log( str.substring(4, 0) ); // lore первое и последнее значение может быть указан в любом порядке
Метод substr
возвращает подстроку от начального значения — start
, до определенной длины length
. Синтаксис такой: str.substr(start, length)
. Например:
let str = 'lorem ipsum';
console.log( str.substr(2, 5) ); // rem i
Значение start
может быть отрицательными. Тогда позиция подстроки определяется справа. Например:
let str = 'lorem ipsum';
console.log( str.substr(-4, 3) ); // psu
Метод slice
используют как метод substring
. Начальное и конечное значение подстроки задается точно также. Синтаксис такой: str.slice(start,end)
, end
— не включается. Например:
let str = 'lorem ipsum';
console.log( str.slice(0, 4) ); // lore
console.log( str.substring(1) ); // orem ipsum
Если последний аргумент не указан, то подстрока возвращается с указанного до последнего символа.
Когда в качестве аргументов подстроки передаются отрицательные числа, то порядок элементов строки отсчитывается справа налево:
let str = 'lorem ipsum';
console.log( str.slice(-4, -1) ); // psu
Сравнение строк
Строки сравниваются посимвольно в алфавитном порядке. Алгоритм сравнения двух строк такой:
- Сравнить первые символы строк.
- Если первый символ первой строки больше (меньше), чем первый символ второй, то первая строка больше (меньше) второй. Сравнение завершено.
- Если первые символы равны, сравниваем вторые символы строк.
- Сравнение продолжается, пока не закончится одна из строк.
- Если обе строки заканчиваются одновременно, то они равны. Иначе большей считается более длинная строка.
Например:
alert( 'Я' > 'А' ); // true
alert( 'Коты' > 'Кода' ); // true
Сравнение 'Я'
> 'А'
завершится на первом шаге.
Строки 'Коты'
и 'Кода'
будут сравниваться посимвольно:
'К'
равна'К'
.'о'
равна'о'
.'т'
больше, чем'д'
.
Сравнение заканчивается. Первая строка больше.
В некоторых случаях удобно сравнивать не посимвольно, а в кодировке UTF-8. Для этого используют метод codePointAt
. Синтаксис такой: str.codePointAt(pos)
. Например, символы 'A'
и 'a'
будут иметь разное значение в UTF-8.
alert( "a".codePointAt(0) ); // 97
alert( "A".codePointAt(0) ); // 65
alert(`a`>`A`);//true
Метод fromCodePoint
создает символ по его коду. Синтаксис такой: String.fromCodePoint(code)
. Например:
alert( String.fromCodePoint(97) ); // a
Правильное сравнение
При правильном сравнении можно сравнивать строки из разных языков. Например: 'Österreich'
— немецкий языки 'Zealand'
— английский язык.
Для этого используют метод localeCompare
. Этот метод возвращает:
- Отрицательное число, если
str1
меньшеstr2
. - Положительное число, если
str1
большеstr2
. 0
, если строки равны.
Например:
alert( 'Österreich'.localeCompare('Zealand') ); // -1, 'Österreich' — str1, 'Zealand' — str2
alert('Zealand'.localeCompare('Österreich') ); // 1, 'Zealand' — str1, 'Österreich' — str2
alert('Österreich'.localeCompare('Österreich') ); // 0
Как всё устроено, Юникод
Суррогатные пары
Буквы в европейских языках представлены в виде 2-х байтовых символов. Всего в таком виде можно представить 65536 комбинаций символов. Поэтому редкие символы кодируются не одним символом, а парой символов. Помните, что смайлик мы можем сделать с помощью двух символов: двоеточия и скобки? 🙂
Такие символы называют суррогатной парой и их длина равна 2
.
Например:
alert( '😂'.length );//2
//Части суррогатной пары не имеют смысла, поэтому они будут определяться, как неизвестные символы.
alert( '😂'[0] ); // �
alert( '😂'[1] ); // �
Суррогатные пары можно обнаружить по их кодам. В диапазоне 0xd800..0xdbff
— можно обнаружить первый символ, в диапазоне 0xdc00..0xdfff
— второй символ.
Например:
alert( '😂'.charCodeAt(0).toString(16) ); //получить код со значением 0 в 16-тиричной системе: d83d
alert( '😂'.charCodeAt(1).toString(16) ); //получить код со значением 0 в 16-тиричной системе: de02
Диакритические знаки и нормализация
В некоторых языках: немецком, шведском, венгерском, турецком есть диакритические символы. Например буква `a`
служит основой для диакритических символов àáâäãåā
.
Чтобы работать с диакритическими знаками в языке JavaScript, используют специальные символы. Например, чтобы добавить сверху буквы `a`
точку, используют символ u0307
.
alert( 'Su0307' );ȧ
Чтобы сравнить диакритические знаки используют метод normalize()
. Синтаксис такой: str.normalize()
:
alert( "Su0307u0323".normalize() == "Su0323u0307".normalize() );//true
Если этот метод не использовать, то при сравнении одинаковых символов мы увидим false
:
alert( "Su0307u0323" == "Su0323u0307" );//false
Нестандартные методы объекта String
Метод anchor
Создает закладку с name
и заключает ее в теги <a>...</a>
:
let str = 'lorem ipsum'.anchor('Закладка');
alert(str);
Метод big
Заключает строку в теги <big>...</big>
:
let str = 'lorem ipsum'.big();
document.write(str);
Метод blink
Заключает строку в теги <blink>…</blink>
. Строка между этими тегами мигает. Метод поддерживается браузерами Netscape и WebTV. Например:
let str = 'lorem ipsum'.blink();
document.write(str);
Метод bold
Заключает строку в теги <b>…</b>
. Шрифт строки между ними становится жирным:
let str = 'lorem ipsum'.bold();
document.write(str);
Метод charAt
Метод возвращает какой-либо символ строки из указанной позиции:
let str = 'lorem ipsum'.charAt(0);// l
document.write(str);
Метод charCodeAt
Метод возвращает код Юникода в определенной позиции:
et str = 'lorem ipsum'.charCodeAt(0);// Код символа `l` в позиции [0] в Юникоде — это 108.
document.write(str);
Метод concat
Метод соединяет строки:
let str = 'lorem ipsum';
document.write(str.concat('dolor sit amet'));//lorem ipsum dolor sit amet
Метод fixed
Метод заключает строку в теги <tt>…</tt>
. Эти теги отображают строку телетайпным шрифтом:
let str = 'lorem ipsum'.fixed();
document.write(str);
Метод fontcolor
Метод помещает строку в тег <font color=цвет>…</font>
и окрасит ее в любой цвет:
let str = 'lorem ipsum'.fontcolor('green');
document.write(str);//строка 'lorem ipsum' стала зеленым цвета
Метод fontsize
Метод помещает строку в тег <font size=`размер`>…</font>
и задаст ее размер:
let str = 'lorem ipsum'.fontsize('20px');
document.write(str);//строка 'lorem ipsum' стала размером 20px
Метод fromCharCode
Метод создает новую строку из символов по коду из Юникод:
let str = String.fromCharCode(108,111, 114, 101, 109, 32, 105, 112, 115, 117, 109);
document.write(str);//lorem ipsum
Метод indexOf
Метод возвращает первую позицию подстроки:
let str = 'lorem ipsum'.indexOf('l');
document.write(str);//0
Метод italics
Метод помещает строку в теги <i>...</i>
:
let str = 'lorem ipsum'.italics();
document.write(str);//строка str выводится курсивом
Метод lastIndexOf
Метод возвращает позицию указанной подстроки:
let str = 'lorem ipsum'.lastIndexOf('ip');
document.write(str);//6 — позиция, с которой начинается подстрока 'ip'
Метод link
Метод помещает строку в теги <a href="uri">…</a>
. Строка становится ссылкой:
let str = 'lorem ipsum'.link('https://proglib.io/');
document.write(str);
Метод localeCompare
Метод сравнивает две строки и возвращает:
-1
— строка меньше,1
— строка больше,0
— строки равны.
Например:
let str1 = 'lorem ipsum'.localeCompare('lorem ipsum');
document.write(str1);//0
let str2 = 'lorem ipsum'.localeCompare('lorem ipsu');
document.write(str2);//1
let str3 = 'lorem ipsum'.localeCompare('lorem ipsum dolor sit amet');
document.write(str3);//-1
Метод match
Метод сопоставляет строковое значение и значение метода. Возвращает совпадение строки и значение, которое указано в скобках:
let str = 'lorem ipsum'.match('lor');
document.write(str);/ часть переменной srt 'lor' совпало со значением метода match('lor').
Метод replace
Метод сопоставляет выражение строки и меняет его на указанное:
let str = 'lorem ipsum'.replace('lor', 'dol');
document.write(str);//Метод нашел в строке подстроку 'lor', и заменил на 'dol', получилось — dolem ipsum
Метод search
Сопоставляет выражение в скобках и строку. В результате получается позиция первого элемента подстроки:
let str = 'lorem ipsum'.search('or');
document.write(str);//1
Метод small
Метод помещает строку в теги <small>...</small>
:
let str = 'lorem ipsum'.small();
document.write(str);//строка на экране будет выглядеть меньше
Метод strike
Метод помещает строку в теги <strike>...</strike>
:
let str = 'lorem ipsum'.strike();
document.write(str);
Метод split
Метод разбивает строку на массив подстрок с помощью указанного разделителя:
let str = 'lorem ipsum'.split(' ');
document.write(str);//lorem,ipsum
В скобках метода указывается разделитель и количество знаков, которые нужно вывести при разделении:
let str = 'lorem ipsum'.split('', 3);
document.write(str);//l,o,r — метод разбил строку на символы с помощью запятой и вывел три знака
Метод sub
Метод заключает строку в теги <sub>...</sub>
:
let str = 'lorem ipsum'.sub();
document.write(str);
Метод sup
Метод заключает строку в теги <sup>...</sup>
:
let str = 'lorem ipsum'.sup();
document.write(str);
Метод toLocaleLowerCase
Метод возвращает строчные буквы:
let str = 'LOREM IPSUM'.toLocaleLowerCase();
document.write(str);
Метод toLocaleUpperCase
Метод возвращает прописные буквы:
let str = 'lorem ipsum'.toLocaleUpperCase();
document.write(str);//LOREM IPSUM
Метод toLowerCase
Метод заменяет все буквы исходной строки на строчные:
let str = 'Lorem ipSum'.toLowerCase();
document.write(str);//lorem ipsum
Метод toString
Метод возвращает исходное значение строки:
let str = 'Lorem ipSum'.toString();
document.write(str);//Lorem ipSum
Метод toUpperCase
Метод меняет символы строки на прописные:
let str = 'Lorem ipSum'.toUpperCase();
document.write(str);//LOREM IPSUM
Метод valueOf
Метод возвращает значение строки:
let str = 'Lorem ipSum'.valueOf();
document.write(str);//Lorem ipSum
***
В этой статье мы:
- узнали, как задавать строку и искать в подстроках;
- как работать с Юникодом и что такое суррогатные пары;
- познакомились с основными и нестандартными методами для работы со строками.
Материалы по теме
- ☕📚 Методы массивов в JavaScript для новичков: советы, рекомендации и примеры
- ☕ 5+5=? Преобразование значений в строку или число в JavaScript
- ☕ Распространенные алгоритмы и структуры данных в JavaScript: полезные алгоритмы для веб-разработки
I have a shopping cart that displays product options in a dropdown menu and if they select “yes”, I want to make some other fields on the page visible.
The problem is that the shopping cart also includes the price modifier in the text, which can be different for each product. The following code works:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str == "Yes (+ $6.95)") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
However I would rather use something like this, which doesn’t work:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
I only want to perform the action if the selected option contains the word “Yes”, and would ignore the price modifier.
cнŝdk
31.2k7 gold badges55 silver badges77 bronze badges
asked Aug 13, 2010 at 21:25
3
Like this:
if (str.indexOf("Yes") >= 0)
…or you can use the tilde operator:
if (~str.indexOf("Yes"))
This works because indexOf()
returns -1
if the string wasn’t found at all.
Note that this is case-sensitive.
If you want a case-insensitive search, you can write
if (str.toLowerCase().indexOf("yes") >= 0)
Or:
if (/yes/i.test(str))
The latter is a regular expression or regex.
Regex breakdown:
/
indicates this is a regexyes
means that the regex will find those exact characters in that exact order/
ends the regexi
sets the regex as case-insensitive.test(str)
determines if the regular expression matchesstr
To sum it up, it means it will see if it can find the lettersy
,e
, ands
in that exact order, case-insensitively, in the variablestr
RedGuy11
3446 silver badges14 bronze badges
answered Aug 13, 2010 at 21:28
SLaksSLaks
863k176 gold badges1900 silver badges1961 bronze badges
2
You could use search or match for this.
str.search( 'Yes' )
will return the position of the match, or -1 if it isn’t found.
answered Aug 13, 2010 at 21:29
hookedonwinterhookedonwinter
12.4k19 gold badges61 silver badges74 bronze badges
2
It’s pretty late to write this answer, but I thought of including it anyhow. String.prototype
now has a method includes
which can check for substring. This method is case sensitive.
var str = 'It was a good date';
console.log(str.includes('good')); // shows true
console.log(str.includes('Good')); // shows false
To check for a substring, the following approach can be taken:
if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
// mainString contains substringToCheck
}
Check out the documentation to know more.
answered May 7, 2016 at 13:38
MunimMunim
2,6061 gold badge19 silver badges28 bronze badges
1
Another way:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
** Tested on Firefox, Safari 6 and Chrome 36 **
az7ar
5,1572 gold badges17 silver badges23 bronze badges
answered Feb 20, 2013 at 19:44
Andy BrahamAndy Braham
9,4694 gold badges46 silver badges56 bronze badges
1
ECMAScript 6 introduces String.prototype.includes
, previously named contains
.
It can be used like this:
'foobar'.includes('foo'); // true
'foobar'.includes('baz'); // false
It also accepts an optional second argument which specifies the position at which to begin searching:
'foobar'.includes('foo', 1); // false
'foobar'.includes('bar', 1); // true
It can be polyfilled to make it work on old browsers.
answered Apr 16, 2016 at 23:00
OriolOriol
270k62 gold badges428 silver badges505 bronze badges
0
The includes() method determines whether one string may be found within another string, returning true or false as appropriate.
Syntax :-string.includes(searchString[, position])
searchString:-A string to be searched for within this string.
position:-Optional. The position in this string at which to begin searching for searchString; defaults to 0.
string = 'LOL';
console.log(string.includes('lol')); // returns false
console.log(string.includes('LOL')); // returns true
answered Nov 18, 2016 at 17:45
Parth RavalParth Raval
3,9893 gold badges23 silver badges36 bronze badges
0
You can use this Polyfill in ie and chrome
if (!('contains' in String.prototype)) {
String.prototype.contains = function (str, startIndex) {
"use strict";
return -1 !== String.prototype.indexOf.call(this, str, startIndex);
};
}
answered Jul 3, 2013 at 14:09
robkorvrobkorv
5397 silver badges5 bronze badges
0
If you are capable of using libraries, you may find that Lo-Dash JS library is quite useful. In this case, go ahead and check _.contains()
(replaced by _.includes()
as of v4).
(Note Lo-Dash convention is naming the library object _.
Don’t forget to check installation in the same page to set it up for your project.)
_.contains("foo", "oo"); // → true
_.contains("foo", "bar"); // → false
// Equivalent with:
_("foo").contains("oo"); // → true
_("foo").contains("bar"); // → false
In your case, go ahead and use:
_.contains(str, "Yes");
// or:
_(str).contains("Yes");
..whichever one you like better.
answered Oct 1, 2015 at 6:18
SelfishSelfish
5,9553 gold badges42 silver badges63 bronze badges
0
I know that best way is str.indexOf(s) !== -1;
http://hayageek.com/javascript-string-contains/
I suggest another way(str.replace(s1, "") !== str
):
var str = "Hello World!", s1 = "ello", s2 = "elloo";
alert(str.replace(s1, "") !== str);
alert(str.replace(s2, "") !== str);
answered Oct 1, 2015 at 6:05
You can also check if the exact word is contained in a string. E.g.:
function containsWord(haystack, needle) {
return (" " + haystack + " ").indexOf(" " + needle + " ") !== -1;
}
Usage:
containsWord("red green blue", "red"); // true
containsWord("red green blue", "green"); // true
containsWord("red green blue", "blue"); // true
containsWord("red green blue", "yellow"); // false
This is how jQuery does its hasClass method.
answered Mar 26, 2015 at 15:43
bashausbashaus
1,6021 gold badge16 silver badges33 bronze badges
you can define an extension method and use it later.
String.prototype.contains = function(it)
{
return this.indexOf(it) != -1;
};
so that you can use in your page anywhere like:
var str="hello how are you";
str.contains("are");
which returns true.
Refer below post for more extension helper methods.
Javascript helper methods
answered Mar 3, 2015 at 13:08
Vikas KottariVikas Kottari
4952 gold badges10 silver badges24 bronze badges
None of the above worked for me as there were blank spaces but this is what I did
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[0];
bottab.style.display="none";
bottab2.style.display="none";
if (td) {
var getvar=td.outerText.replace(/s+/, "") ;
if (getvar==filter){
tr[i].style.display = "";
}else{
tr[i].style.display = "none";
}
}
}
answered Jul 17, 2017 at 0:14
В предыдущей статье мы начали тему работы со строками в JavaScript. В этом материале вы узнаете, как выполнять поиск в строке, как работать с подстрокой, как извлекать часть строки и т. д.
Поиск строки в строке в JavaScript
С помощью метода IndexOf() можно вернуть индекс первого вхождения заданного текста в строку:
var str = "Please locate where 'locate' occurs!"; var pos = str.indexOf("locate");В нашем случае происходит подсчёт позиции с нуля. При этом:
1) 0 — первая позиция в строке,
2) 1 — вторая,
3) 2 — третья…Идём дальше. Функция LastIndexOf() в JavaScript вернёт индекс последнего вхождения:
var str = "Please locate where 'locate' occurs!"; var pos = str.lastIndexOf("locate");Оба этих метода принимают 2-й параметр в виде начальной позиции для поиска:
var str = "Please locate where 'locate' occurs!"; var pos = str.indexOf("locate",15);Стоит упомянуть и функцию Search() — она выполняет поиск строки для заданного значения, возвращая позицию совпадения:
var str = "Please locate where 'locate' occurs!"; var pos = str.search("locate");Метод slice () в JavaScript
Функция slice() извлечёт часть строки и вернёт извлечённую часть в новой строке. Метод способен принимать два параметра: начальный индекс (это положение) и конечный индекс (речь идёт о позиции).
К примеру, давайте нарежем часть строки из позиции 7 в положение 13:
var str = "Apple, Banana, Kiwi"; var res = str.slice(7, 13);В нашем случае результатом будет:
Если параметр будет иметь отрицательное значение, то позиция будет учитываться с конца строки. Например:
var str = "Apple, Banana, Kiwi"; var res = str.slice(-12, -6);Результат будет тот же.
Кстати, если 2-й параметр опустить, то метод сделает срез оставшейся части строки:
Результатом будет:
То же самое получим, выполнив срез с конца:
var res = str.slice(-12);Остаётся лишь добавить, что отрицательные позиции не функционируют в Internet Explorer 8 и других, более ранних версиях.
Метод подстроки в JavaScript
Подстрока в JavaScript аналогична срезу с той разницей, что подстрока не способна принимать отрицательные индексы:
var str = "Apple, Banana, Kiwi"; var res = str.substring(7, 13);В качестве результата опять получим «Banana».
Если же мы опустим 2-й параметр, то подстрока разрежет оставшуюся часть строки.
Метод substr () в JavaScript
Строковый метод substr() похож на slice() с той разницей, что 2-й параметр показывает длину извлечённой детали.
var str = "Apple, Banana, Kiwi"; var res = str.substr(7, 6);Результат: Banana.
Мы можем опустить 2-й параметр — тогда строковый метод substr() разрежет оставшуюся часть строки.
var str = "Apple, Banana, Kiwi"; var res = str.substr(7);Получим: Banana, Kiwi.
Если 1-й параметр будет отрицательным, позиция будет рассчитываться с конца строки.
var str = "Apple, Banana, Kiwi"; var res = str.substr(-4);Результат: Kiwi.
Меняем содержимое строки в JavaScript
Строковый метод Replace() позволит заменить указанное значение иным значением в строке:
str = "Please visit Microsoft!"; var n = str.replace("Microsoft", "W3Schools");Результат: Please visit W3Schools!
Обратите внимание, что метод Replace() не изменит строку, в которой вызывается, а возвратит новую.
В следующем примере функция Replace() меняет лишь первое совпадение:
str = "Please visit Microsoft and Microsoft!"; var n = str.replace("Microsoft", "W3Schools");Итог: Please visit W3Schools and Microsoft!
Кстати, по умолчанию Replace() учитывает регистр. Написав MICROSOFT, мы увидим, что функция работать не будет:
Примерstr = "Please visit Microsoft!"; var n = str.replace("MICROSOFT", "W3Schools");Но мы можем заменить регистр без его учёта, если воспользуемся регулярным выражением с пометкой ” i “:
str = "Please visit Microsoft!"; var n = str.replace(/MICROSOFT/i, "W3Schools");Результат: Please visit W3Schools!
Здесь стоит заметить, что регулярные выражения надо писать без кавычек.
Если желаете заменить все совпадения, воспользуйтесь регулярным выражением с флагом /g:
str = "Please visit Microsoft and Microsoft!"; var n = str.replace(/Microsoft/g, "W3Schools");Тут получим следующее: Please visit W3Schools and W3Schools!
Извлекаем строковые символы в JavaScript
Есть 2 безопасных строковых функции для извлечения строковых символов:
• charCodeAt (позиция);
• charAt (позиция).Функция charAt() возвратит символ по указанному нами индексу (позиции) в строке:
var str = "HELLO WORLD"; str.charAt(0);Вывод:
Что касается метода charCodeAt(), то он вернёт Юникод символа по указанному нами индексу:
var str = "HELLO WORLD"; str.charCodeAt(0); // вернёт 72Что ж, на этом всё, удачного вам кодинга!
Источник
Интересует профессиональный курс по JavaScript-разработке? Переходите по ссылке ниже:
Строки
В JavaScript любые текстовые данные являются строками. Не существует отдельного типа “символ”, который есть в ряде других языков.
Внутренним форматом строк, вне зависимости от кодировки страницы, является Юникод (Unicode).
Создание строк
Строки создаются при помощи двойных или одинарных кавычек:
var text = "моя строка"; var anotherText = 'еще строка'; var str = "012345";
В JavaScript нет разницы между двойными и одинарными кавычками.
Специальные символы
Строки могут содержать специальные символы. Самый часто используемый из таких символов — это “перевод строки”.
Он обозначается как n
, например:
alert( 'ПриветnМир' ); // выведет "Мир" на новой строке
Есть и более редкие символы, вот их список:
Специальные символы
Символ | Описание |
---|---|
b | Backspace |
f | Form feed |
n | New line |
r | Carriage return |
t | Tab |
uNNNN | Символ в кодировке Юникод с шестнадцатеричным кодом `NNNN`. Например, `u00A9` — юникодное представление символа копирайт © |
Экранирование специальных символов
Если строка в одинарных кавычках, то внутренние одинарные кавычки внутри должны быть экранированы, то есть снабжены обратным слешем '
, вот так:
var str = '*!*I'm*/!* a JavaScript programmer';
В двойных кавычках — экранируются внутренние двойные:
var str = "I'm a JavaScript "programmer" "; alert( str ); // I'm a JavaScript "programmer"
Экранирование служит исключительно для правильного восприятия строки JavaScript. В памяти строка будет содержать сам символ без ''
. Вы можете увидеть это, запустив пример выше.
Сам символ обратного слэша ''
является служебным, поэтому всегда экранируется, т.е пишется как \
:
var str = ' символ \ '; alert( str ); // символ
Заэкранировать можно любой символ. Если он не специальный, то ничего не произойдёт:
alert( "a" ); // a // идентично alert( "a" );
Методы и свойства
Здесь мы рассмотрим методы и свойства строк, с некоторыми из которых мы знакомились ранее, в главе info:properties-and-methods.
Длина length
Одно из самых частых действий со строкой — это получение ее длины:
var str = "Myn"; // 3 символа. Третий - перевод строки alert( str.length ); // 3
Доступ к символам
Чтобы получить символ, используйте вызов charAt(позиция)
. Первый символ имеет позицию 0
:
var str = "jQuery"; alert( str.charAt(0) ); // "j"
В JavaScript нет отдельного типа “символ”, так что charAt
возвращает строку, состоящую из выбранного символа.
Также для доступа к символу можно использовать квадратные скобки:
var str = "Я - современный браузер!"; alert( str[0] ); // "Я"
Разница между этим способом и charAt
заключается в том, что если символа нет — charAt
выдает пустую строку, а скобки — undefined
:
alert( "".charAt(0) ); // пустая строка alert( "" [0] ); // undefined
Вообще же метод charAt
существует по историческим причинам, ведь квадратные скобки — проще и короче.
Обратите внимание, `str.length` -- это *свойство* строки, а `str.charAt(pos)` -- *метод*, т.е. функция.
Обращение к методу всегда идет со скобками, а к свойству -- без скобок.
Изменения строк
Содержимое строки в JavaScript нельзя изменять. Нельзя взять символ посередине и заменить его. Как только строка создана — она такая навсегда.
Можно лишь создать целиком новую строку и присвоить в переменную вместо старой, например:
var str = "строка"; str = str[3] + str[4] + str[5]; alert( str ); // ока
Смена регистра
Методы toLowerCase()
и toUpperCase()
меняют регистр строки на нижний/верхний:
alert( "Интерфейс".toUpperCase() ); // ИНТЕРФЕЙС
Пример ниже получает первый символ и приводит его к нижнему регистру:
alert( "Интерфейс" [0].toLowerCase() ); // 'и'
Поиск подстроки
Для поиска подстроки есть метод indexOf(подстрока[, начальная_позиция]).
Он возвращает позицию, на которой находится подстрока
или -1
, если ничего не найдено. Например:
var str = "Widget with id"; alert( str.indexOf("Widget") ); // 0, т.к. "Widget" найден прямо в начале str alert( str.indexOf("id") ); // 1, т.к. "id" найден, начиная с позиции 1 alert( str.indexOf("widget") ); // -1, не найдено, так как поиск учитывает регистр
Необязательный второй аргумент позволяет искать, начиная с указанной позиции. Например, первый раз "id"
появляется на позиции 1
. Чтобы найти его следующее появление — запустим поиск с позиции 2
:
var str = "Widget with id"; alert(str.indexOf("id", 2)) // 12, поиск начат с позиции 2
Также существует аналогичный метод lastIndexOf, который ищет не с начала, а с конца строки.
Для красивого вызова `indexOf` применяется побитовый оператор НЕ `'~'`.
Дело в том, что вызов `~n` эквивалентен выражению `-(n+1)`, например:
```js run
alert( ~2 ); // -(2+1) = -3
alert( ~1 ); // -(1+1) = -2
alert( ~0 ); // -(0+1) = -1
*!*
alert( ~-1 ); // -(-1+1) = 0
*/!*
```
Как видно, `~n` -- ноль только в случае, когда `n == -1`.
То есть, проверка `if ( ~str.indexOf(...) )` означает, что результат `indexOf` отличен от `-1`, т.е. совпадение есть.
Вот так:
```js run
var str = "Widget";
if (~str.indexOf("get")) {
alert( 'совпадение есть!' );
}
```
Вообще, использовать возможности языка неочевидным образом не рекомендуется, поскольку ухудшает читаемость кода.
Однако, в данном случае, все в порядке. Просто запомните: `'~'` читается как "не минус один", а `"if ~str.indexOf"` читается как `"если найдено"`.
Поиск всех вхождений
Чтобы найти все вхождения подстроки, нужно запустить indexOf
в цикле. Как только получаем очередную позицию — начинаем следующий поиск со следующей.
Пример такого цикла:
var str = "Ослик Иа-Иа посмотрел на виадук"; // ищем в этой строке var target = "Иа"; // цель поиска var pos = 0; while (true) { var foundPos = str.indexOf(target, pos); if (foundPos == -1) break; alert( foundPos ); // нашли на этой позиции pos = foundPos + 1; // продолжить поиск со следующей }
Такой цикл начинает поиск с позиции 0
, затем найдя подстроку на позиции foundPos
, следующий поиск продолжит с позиции pos = foundPos+1
, и так далее, пока что-то находит.
Впрочем, тот же алгоритм можно записать и короче:
var str = "Ослик Иа-Иа посмотрел на виадук"; // ищем в этой строке var target = "Иа"; // цель поиска *!* var pos = -1; while ((pos = str.indexOf(target, pos + 1)) != -1) { alert( pos ); } */!*
Взятие подстроки: substring, substr, slice
В JavaScript существуют целых 3 (!) метода для взятия подстроки, с небольшими отличиями между ними.
substring(start [, end])
: Метод substring(start, end)
возвращает подстроку с позиции start
до, но не включая end
.
```js run
var str = "*!*s*/!*tringify";
alert(str.substring(0,1)); // "s", символы с позиции 0 по 1 не включая 1.
```
Если аргумент `end` отсутствует, то идет до конца строки:
```js run
var str = "st*!*ringify*/!*";
alert(str.substring(2)); // ringify, символы с позиции 2 до конца
```
: Первый аргумент имеет такой же смысл, как и в `substring`, а второй содержит не конечную позицию, а количество символов.
```js run
var str = "st*!*ring*/!*ify";
str = str.substr(2,4); // ring, со 2-й позиции 4 символа
alert(str)
```
Если второго аргумента нет -- подразумевается "до конца строки".
slice(start [, end])
: Возвращает часть строки от позиции start
до, но не включая, позиции end
. Смысл параметров — такой же как в substring
.
Отрицательные аргументы
Различие между substring
и slice
— в том, как они работают с отрицательными и выходящими за границу строки аргументами:
substring(start, end)
: Отрицательные аргументы интерпретируются как равные нулю. Слишком большие значения усекаются до длины строки:
```js run
alert( "testme".substring(-2) ); // "testme", -2 становится 0
```
Кроме того, если <code>start > end</code>, то аргументы меняются местами, т.е. возвращается участок строки *между* `start` и `end`:
```js run
alert( "testme".substring(4, -1) ); // "test"
// -1 становится 0 -> получили substring(4, 0)
// 4 > 0, так что аргументы меняются местами -> substring(0, 4) = "test"
```
slice
: Отрицательные значения отсчитываются от конца строки:
```js run
alert( "testme".slice(-2) ); // "me", от 2 позиции с конца
```
```js run
alert( "testme".slice(1, -1) ); // "estm", от 1 позиции до первой с конца.
```
Это гораздо более удобно, чем странная логика `substring`.
Отрицательное значение первого параметра поддерживается в substr
во всех браузерах, кроме IE8-.
Если выбирать из этих трёх методов один, для использования в большинстве ситуаций — то это будет slice
: он и отрицательные аргументы поддерживает и работает наиболее очевидно.
Кодировка Юникод
Как мы знаем, символы сравниваются в алфавитном порядке 'А' < 'Б' < 'В' < ... < 'Я'
.
Но есть несколько странностей..
-
Почему буква
'а'
маленькая больше буквы'Я'
большой?alert( 'а' > 'Я' ); // true
-
Буква
'ё'
находится в алфавите междуе
иж
:абвгдеёжз..
. Но почему тогда'ё'
больше'я'
?alert( 'ё' > 'я' ); // true
Чтобы разобраться с этим, обратимся к внутреннему представлению строк в JavaScript.
Все строки имеют внутреннюю кодировку Юникод.
Неважно, на каком языке написана страница, находится ли она в windows-1251 или utf-8. Внутри JavaScript-интерпретатора все строки приводятся к единому “юникодному” виду. Каждому символу соответствует свой код.
Есть метод для получения символа по его коду:
String.fromCharCode(code)
: Возвращает символ по коду code
:
```js run
alert( String.fromCharCode(1072) ); // 'а'
```
…И метод для получения цифрового кода из символа:
str.charCodeAt(pos)
: Возвращает код символа на позиции pos
. Отсчет позиции начинается с нуля.
```js run
alert( "абрикос".charCodeAt(0) ); // 1072, код 'а'
```
Теперь вернемся к примерам выше. Почему сравнения 'ё' > 'я'
и 'а' > 'Я'
дают такой странный результат?
Дело в том, что символы сравниваются не по алфавиту, а по коду. У кого код больше — тот и больше. В юникоде есть много разных символов. Кириллическим буквам соответствует только небольшая часть из них, подробнее — Кириллица в Юникоде.
Выведем отрезок символов юникода с кодами от 1034
до 1113
:
var str = ''; for (var i = 1034; i <= 1113; i++) { str += String.fromCharCode(i); } alert( str );
Результат:
ЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяѐёђѓєѕіїјљ
Мы можем увидеть из этого отрезка две важных вещи:
-
Строчные буквы идут после заглавных, поэтому они всегда больше.
В частности,
'а'(код 1072) > 'Я'(код 1071)
.То же самое происходит и в английском алфавите, там
'a' > 'Z'
. -
Ряд букв, например
ё
, находятся вне основного алфавита.В частности, маленькая буква
ё
имеет код, больший чемя
, поэтому'ё'(код 1105) > 'я'(код 1103)
.Кстати, большая буква
Ё
располагается в Unicode доА
, поэтому'Ё'
(код 1025) <'А'
(код 1040). Удивительно: есть буква меньше чемА
🙂
Буква ё
не уникальна, точки над буквой используются и в других языках, приводя к тому же результату.
Например, при работе с немецкими названиями:
alert( "ö" > "z" ); // true
Кстати, если мы знаем код символа в кодировке юникод, то можем добавить его в HTML, используя "числовую ссылку" (numeric character reference).
Для этого нужно написать сначала `&#`, затем код, и завершить точкой с запятой `';'`. Например, символ `'а'` в виде числовой ссылки: `а`.
Если код хотят дать в 16-ричной системе счисления, то начинают с `&#x`.
В юникоде есть много забавных и полезных символов, например, символ ножниц: ✂ (`✂`), дроби: ½ (`½`) ¾ (`¾`) и другие. Их можно использовать вместо картинок в дизайне.
Посимвольное сравнение
Сравнение строк работает лексикографически, иначе говоря, посимвольно.
Сравнение строк s1
и s2
обрабатывается по следующему алгоритму:
- Сравниваются первые символы:
s1[0]
иs2[0]
. Если они разные, то сравниваем их и, в зависимости от результата их сравнения, возвратитьtrue
илиfalse
. Если же они одинаковые, то… - Сравниваются вторые символы
s1[1]
иs2[1]
- Затем третьи
s1[2]
иs2[2]
и так далее, пока символы не будут наконец разными, и тогда какой символ больше — та строка и больше. Если же в какой-либо строке закончились символы, то считаем, что она меньше, а если закончились в обеих — они равны.
Спецификация языка определяет этот алгоритм более детально. Если же говорить простыми словами, смысл алгоритма в точности соответствует порядку, по которому имена заносятся в орфографический словарь.
"Вася" > "Ваня" // true, т.к. начальные символы совпадают, а потом 'с' > 'н' "Дома" > "До" // true, т.к. начало совпадает, но в 1-й строке больше символов
Бывает, что числа приходят в скрипт в виде строк, например как результат `prompt`. В этом случае результат их сравнения будет неверным:
```js run
alert( "2" > "14" ); // true, так как это строки, и для первых символов верно "2" > "1"
```
Если хотя бы один аргумент -- не строка, то другой будет преобразован к числу:
```js run
alert( 2 > "14" ); // false
```
Правильное сравнение
Все современные браузеры, кроме IE10- (для которых нужно подключить библиотеку Intl.JS) поддерживают стандарт ECMA 402, поддерживающий сравнение строк на разных языках, с учётом их правил.
Способ использования:
var str = "Ёлки"; alert( str.localeCompare("Яблони") ); // -1
Метод str1.localeCompare(str2)
возвращает -1
, если str1 < str2
, 1
, если str1 > str2
и 0
, если они равны.
Более подробно про устройство этого метода можно будет узнать в статье info:intl, когда это вам понадобится.
Итого
- Строки в JavaScript имеют внутреннюю кодировку Юникод. При написании строки можно использовать специальные символы, например
n
и вставлять юникодные символы по коду. - Мы познакомились со свойством
length
и методамиcharAt
,toLowerCase/toUpperCase
,substring/substr/slice
(предпочтителенslice
). Есть и другие методы, например trim обрезает пробелы с начала и конца строки. - Строки сравниваются побуквенно. Поэтому если число получено в виде строки, то такие числа могут сравниваться некорректно, нужно преобразовать его к типу number.
- При сравнении строк следует иметь в виду, что буквы сравниваются по их кодам. Поэтому большая буква меньше маленькой, а буква
ё
вообще вне основного алфавита. - Для правильного сравнения существует целый стандарт ECMA 402. Это не такое простое дело, много языков и много правил. Он поддерживается во всех современных браузерах, кроме IE10-, в которых нужна библиотека https://github.com/andyearnshaw/Intl.js/. Такое сравнение работает через вызов
str1.localeCompare(str2)
.
Больше информации о методах для строк можно получить в справочнике: http://javascript.ru/String.