Когда я пишу на javascript, то приходится часто обращаться к поисковым системам, с целью уточнить синтаксис методов (и порядок, определение аргументов) работающих со строками.
В этой статье я постараюсь привести примеры и описание наиболее распространенных методов javascript связанных со строками. Наиболее популярные методы для удобства расположены в верхней части статьи.
Преобразовываем в строкуВы можете преобразовать число, булево значение или объект в строку.
Var myNumber = 24; // 24 var myString = myNumber.toString(); // "24"
Вы также можете совершить подобную манипуляцию при помощи функции string() .
Var myNumber = 24; // 24 var myString = String(myNumber); // "24"
Николас Закас говорит: "Если вы не уверены в значении (null или undefined), то используйте функцию String() , так как она возвращает строку в независимости от типа переменной".
undefined означает, что переменной не присвоено никакого значения, a null , - что ей присвоено пустое значение (можно сказать, что null определяется, как пустой объект).
Разбиваем строку на подстрокиЧтобы разбить строку на массив из подстрок вы можете использовать метод split() :
Var myString = "coming,apart,at,the,commas"; var substringArray = myString.split(","); // ["coming", "apart", "at", "the", "commas"] var arrayLimited = myString.split(",", 3); // ["coming", "apart", "at"]
Как следует из последней строки, значение второго необязательного аргумента определяет количество элементов у возвращаемого массива.
Получить длину строкиПри помощи свойства length вы можете найти число юникодных символов в строке:
Var myString = "You"re quite a character."; var stringLength = myString.length; // 25
Определяем подстроку в строкеЕсть два способа осуществить задуманное:
Использовать indexOf() :
Var stringOne = "Johnny Waldo Harrison Waldo"; var wheresWaldo = stringOne.indexOf("Waldo"); // 7
Метод indexOf() ищет подстроку (первый передаваемый аргумент) в строке (от начала строки) и возвращает позицию первого символа, с которого началось вхождение подстроки в строку.
Использовать lastIndexOf() :
Var stringOne = "Johnny Waldo Harrison Waldo"; var wheresWaldo = stringOne.lastIndexOf("Waldo"); // 22
Метод lastIndexOf() делает все то же самое, за исключением того, что он ищет последнюю подстроку по вхождению в строку.
В случае, если подстрока не найдена оба метода возвращают -1. Второй необязательный аргумент указывает на позицию в строке, с которой вы хотите начать поиск. Так, если для метода indexOf() второй аргумент равен 5, то поиск начнется с 5-го символа, а 0-4 символы будут проигнорированы. Для lastIndexOf() , также если второй аргумент равен 5, поиск начнется в обратном направлении, причем символы от 6-го и выше будут проигнорированы.
Как заменить часть строкиЧтобы заменить часть (или даже всю) строки используйте метод replace() .
Var slugger = "Josh Hamilton"; var betterSlugger = slugger.replace("h Hamilton", "e Bautista"); console.log(betterSlugger); // "Jose Bautista"
В первом аргументе содержится та часть подстроки, которая подлежит замене; второй аргумент - это та строка, которая встанет на место заменяемой подстроки. Будет заменен только первый экземпляр подстроки.
Чтобы заменить все вхождения подстроки, используйте регулярное выражение c флагом " g ".
Var myString = "She sells automotive shells on the automotive shore"; var newString = myString.replace(/automotive/g, "sea"); console.log(newString); // "She sells sea shells on the sea shore"
Второй аргумент может включать заменяемую подстроку или функцию.
Найти символ по заданной позицииЧтобы выяснить какой символ стоит в заданной позиции, вы можете использовать метод charAt() :
Var myString = "Birds of a Feather"; var whatsAtSeven = myString.charAt(7); // "f"
Как это часто бывает в javascript, первая позиция ведет свой отсчет с 0, а не с 1.
Как альтернативу вы можете использовать метод charCodeAt() , однако вместо самого символа вы получите его код.
Var myString = "Birds of a Feather"; var whatsAtSeven = myString.charCodeAt(7); // "102" var whatsAtEleven = myString.charCodeAt(11); // "70"
Отметьте, что код для прописной буквы (позиция 11) отличается от кода той же буквы, но в малом регистре (позиция 7).
Конкатенация строк в javascriptПо большой части для конкатенации строк вы будете использовать оператор (+). Но вы также можете объединить строки, используя метод concat() .
Var stringOne = "Knibb High football "; var stringTwo = stringOne.concat("rules."); // "Knibb High football rules"
В concat() можно передать множество строк, причем в результирующей строке они будут расположены в порядке их добавления в метод concat() .
Var stringOne = "Knibb "; var stringTwo = "High "; var stringThree = "football "; var stringFour = "rules."; var finalString = stringOne.concat(stringTwo, stringThree, stringFour); console.log(finalString); // "Knibb high football rules."
Часть строки (извлечь подстроку в javascript)Есть три различных способа создать новую строку, "выдернув" часть подстроки из уже имеющейся строки.
Используя slice() :
Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.slice(5, 10); // "fghij"
Используя substring() :
Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substring(5, 10); // "fghij"
Для обеих (slice() и substring()) методов первый аргумент - это позиция символа, с которого начинается подстрока (отсчет ведется с 0) , второй аргумент - это позиция символа, на котором подстрока заканчивается, причем символ, обозначенный во втором аргументе, не включается в возвращаемую подстроку.
Используя substr() :
Var stringOne = "abcdefghijklmnopqrstuvwxyz"; var stringTwo = stringOne.substr(5, 10); // "fghijklmno"
Для метода substr первый аргумент также определяет позицию символа, с которого начинается подстрока. Второй аргумент является необязательным. Но в тоже время второй аргумент определяет количество символов, которые должны быть включены в подстроку, начиная с позиции, которую мы уже определили в первом аргументе. Данная методика хорошо проиллюстрирована на примере выше.
Преобразование строки в нижний или верхний регистр на javascriptЕсть четыре метода сделать необходимые преобразования. Два для преобразования символов строки в верхний регистр.
Var stringOne = "Speak up, I can"t hear you."; var stringTwo = stringOne.toLocaleUpperCase(); // "SPEAK UP, I CAN"T HEAR YOU" var stringThree = stringOne.toUpperCase(); // "SPEAK UP, I CAN"T HEAR YOU"
И два для преобразования строки в нижний регистр:
Var stringOne = "YOU DON"T HAVE TO YELL"; var stringTwo = stringOne.toLocaleLowerCase(); // "you don"t have to yell" var stringThree = stringOne.toLowerCase(); // "you don"t have to yell"
Как правило, нет разницы между locale-методом и не-locale-методом, однако "для некоторых языков, например для турецкого, у которых регистр символов не следует установленному регистру в системе Unicode, последствия использования не-locale-метода могут быть различными". Поэтому следуйте следующему правилу: "если вы не знаете языка, в котором будет работать код, безопаснее использовать locale-методы".
Соответствие шаблону в javascriptПроверить наличие шаблона в строке можно при помощи 2-х методов.
Метод match() вызывается у объекта string , в качестве аргумента методу match() передается регулярное выражение.
Var myString = "How much wood could a wood chuck chuck"; var myPattern = /.ood/; var myResult = myString.match(myPattern); // ["wood"] var patternLocation = myResult.index; // 9 var originalString = myResult.input // "How much wood could a wood chuck chuck"
И exec() метод вызывается у RegExp объекта, в качестве аргумента передается строка:
Var myString = "How much wood could a wood chuck chuck"; var myPattern = /.huck/; var myResult = myPattern.exec(myString); // ["chuck"] var patternLocation = myResult.index; // 27 var originalString = myResult.input // "How much wood could a wood chuck chuck"
Оба метода возвращают первое совпавшее вхождение. Если совпадения не найдены будет возвращен NULL. Если у регулярного выражения присутствует флаг " g ", то в качестве результата будет возвращен массив, содержащий все совпадения.
Вы также можете использовать метод search(), который в качестве аргумента принимает регулярное выражение и возвращает начальную позицию первого совпавшего шаблона.
Var myString = "Assume"; var patternLocation = myString.search(/ume/); // 3
Если совпадений не найдено, метод возвратит -1.
Сравнение двух строк для последующей сортировкиЧтобы сравнить две строки в зависимости от порядка сортировки в языковом стандарте, вы можете использовать метод localeCompare . Метод localeCompare возвращает три возможных значения.
MyString = "chicken"; var myStringTwo = "egg"; var whichCameFirst = myString.localeCompare(myStringTwo); // -1 (except Chrome, which returns -2) whichCameFirst = myString.localeCompare("chicken"); // 0 whichCameFirst = myString.localeCompare("apple"); // 1 (Chrome returns 2)
Как показано выше, будет возвращено отрицательное значение, если оригинальная строка при сортировке оказывается перед строковым аргументом, если строковой аргумент при сортировке оказывается после оригинальная строки, возвращается значение +1. Если возвращается нулевое значение, две строки эквивалентны.
Последнее обновление: 06.04.2018
Для создания строк мы можем как напрямую присваивать переменной строку:
Let name = "Tom";
Для работы со строками предназначен объект String , поэтому также можно использовать конструктор String:
Var name = new String("Tom");
Но как правило, используется первый более краткий способ. В первом случае JavaScript при необходимости автоматически преобразует переменную примитивного типа в объект String.
Объект String имеет большой набор свойств и методов, с помощью которых мы можем манипулировать строками.
Свойство length указывает на длину строки:
Var hello = "привет мир"; console.log("В строке "" + hello + "" " + hello.length + " символов");
Метод repeat() позволяет создать строку путем многократного повторения другой строки. Количество повторов передается в качестве аргумента:
Let hello = "hello "; console.log(hello.repeat(3)); // hello hello hello
Шаблоны строкШаблоны строк позволяют вставлять в строку различные значения. Для этого строки заключаются в косые кавычки:
Let name = "Tom"; let hello = `Hello ${name}`; console.log(hello); // Hello Tom let age = 23; let info = `${name} is ${age} years old`; console.log(info); // Tom is 23 years old
Для вставки значения в строку оно заключается в фигурные скобки, перед которыми ставится знак доллара.
Также вместо скалярных значений могут добавляться свойства сложных объектов или результаты выражений:
Let tom ={ name: "Tom", age: 25 } let info = `${tom.name} is ${tom.age} years old`; console.log(info); // Tom is 23 years old function sum(x, y){ return x + y; } let a = 5, b = 4; let result = `${a} + ${b} = ${sum(a, b)}`; console.log(result); // 5 + 4 = 9
Поиск в строкеДля поиска в строки некоторой подстроки используются методы indexOf() (индекс первого вхождения подстроки) и lastIndexOf() (индекс последнего вхождения подстроки). Эти методы принимают два параметра:
Подстроку, которую надо найти
Необязательный параметр, который указывает, с какого символа следует проводить поиск подстроки в строке
Оба этих метода возвращают индекс символа, с которого в строке начинается подстрока. Если подстрока не найдена, то возвращается число -1.
Let hello = "привет мир. пока мир"; let key = "мир"; let firstPos = hello.indexOf(key); let lastPos = hello.lastIndexOf(key); console.log("Первое вхождение: ", firstPos); // 7 console.log("Последнее вхождение: ", lastPos); // 17
Еще один метод - includes() возвращает true, если строка содержит определенную подстроку.
Let hello = "привет мир. пока мир"; console.log(hello.includes("мир")); // true console.log(hello.includes("миг")); // false
С помощью второго дополнительного параметра можно определить индекс, с которого будет начинаться поиск подстроки:
Let hello = "привет мир. пока мир"; console.log(hello.includes("мир", 5)); // true console.log(hello.includes("привет", 6)); // false
Выбор подстрокиДля того, чтобы вырезать из строки подстроку, применяются методы substr() и substring() .
Метод substring() принимает два параметра:
индекс символа в строке, начиная с которого надо проводить обрезку строки
индекс, до которого надо обрезать строку
Метод substr() также в качестве первого параметра принимает начальный индекс подстроки, а в качестве второго - длину вырезаемой подстроки:
Let hello = "привет мир. пока мир"; let bye = hello.substr(12, 4); console.log(bye); // пока
Если второй параметр не указывается, то обрезается вся остальная часть строки:
Let hello = "привет мир. пока мир"; let bye = hello.substr(12); console.log(bye); // пока мир
Управление регистромДля изменения регистра имеются методы toLowerCase() (для перевода в нижний регистр) и toUpperCase() (для перевода в верхний регистр).
Let hello = "Привет Том"; console.log(hello.toLowerCase()); // привет том console.log(hello.toUpperCase()); // ПРИВЕТ ТОМ
Получение символа по индексуЧтобы получить определенный символ в строке по индексу, можно применять методы charAt() и charCodeAt() . Оба этих метода в качестве параметра принимают индекс символа:
Let hello = "Привет Том"; console.log(hello.charAt(2)); // и console.log(hello.charCodeAt(2)); // 1080
Но если в качестве результата метод charAt() возвращает сам символ, то метод charCodeAt() возвращает числовой код этого символа.
Удаление пробеловДля удаления начальных и концевых пробелов в стоке используется метод trim() :
Let hello = " Привет Том "; let beforeLength = hello.length; hello = hello.trim(); let afterLength = hello.length; console.log("Длина строки до: ", beforeLength); // 15 console.log("Длина строки после: ", afterLength); // 10
Объединение строкМетод concat() объединяет две строки:
Let hello = "Привет "; let world = "мир"; hello = hello.concat(world); console.log(hello); // Привет мир
Замена подстрокиМетод replace() заменяет первое вхождение одной подстроки на другую:
Let hello = "Добрый день"; hello = hello.replace("день", "вечер"); console.log(hello); // Добрый вечер
Первый параметр метода указывает, какую подстроку надо заменить, а второй параметр - на какую подстроку надо заменить.
Разделение строкиМетод split() разбивает строку на массив подстрок по определенному разделителю. В качестве разделителя используется строка, которая передается в метод:
Var message = "Сегодня была прекрасная погода"; var stringArray = message.split(" "); for(var str in stringArray) console.log(stringArray);
Вывод браузера
Сегодня была прекрасная погода
Проверка начала и окончания строкиМетод startsWith() возвращает true, если строка начинается с определенной подстроки. А метод endsWith() возвращает true, если строка оканчивается на определенную подстроку.
Let 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 - индекс с конца строки), относительно которого будет производиться сравнение:
Let 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 индекс с конца
Объект Number является объектом-обёрткой, который позволяет вам работать с числовыми значениями как с объектами. Объект Number создаётся с помощью конструктора Number().
В контексте обычной функции (то есть, без оператора new), объект Number может использоваться для явного приведения типов:
Var num = Number("32");
Синтаксис var foo = new Number(value); Параметры: foo Переменная, которой присваивается объект Number. value Числовое значение (или другое, которое может быть приведено к числу), которое примет объект после создания. Если аргумент не может быть преобразован в число, возвращается NaN . Методы Свойстваconstructor | Ссылается на функцию-конструктор, которая была использована при создании объекта. |
MAX_VALUE | Представляет наибольшее представимое положительное число. |
MIN_VALUE | Представляет наименьшее представимое положительное число - то есть, самое близкое к нулю положительное число (которое ещё не является нулём). |
NEGATIVE_INFINITY | Специальное значение для представления отрицательной бесконечности. Возвращается, когда вычисленное значение окажется меньше самого маленького допустимого значения. |
NaN | Специально значение означающее "Not-a-Number" (не число). |
POSITIVE_INFINITY | Специальное значение для представления положительной бесконечности. Возвращается, когда вычисленное значение окажется большего самого большого допустимого значения. |
prototype | Ссылается на объект, являющийся прототипом для объектов типа Number. Данное свойство используется интерпретатором, когда функция используется как конструктор при создании нового объекта. Любой объект, созданный с помощью конструктора, наследует все свойства объекта, на который ссылается свойство prototype. |
Функция isNaN возвращает лишь два значения: либо Истина - true , либо Ложь - false .
Если в переменной не число , то функция isNaN вернет Истину - следует обратить на это особое внимание (НЕ ЧИСЛО – это ИСТИНА. isNaN переводится как не число) . Если же в переменной число , то она вернет Ложь .
var name
= "Антон"
; /* строковый объект */
var age
=
35
; /* числовой объект */
if(isNaN
(name
)) /* Если в переменной name не число - это Истина */
{
document.write
(name
+ " - это не число"
)
}
else /* иначе - Ложь */
{
document.write
(name + " - это число"
)
}
Запомните, что isNaN - это встроенная в javascript функция.
, благодаря которому и при помощи функции isNaN проводилась проверка: является ли значение переменной числом или нет .Кроме этого здесь нужно будет вспомнить тему массивов , циклов и функций в javascript .
var randSimbol = ["Молоко" , 77 , 11 , "Мед" , - 88 ];
function
number
(randSimbol
)
{
for(i
=
0
; i
<
randSimbol
.length
; i
++
) /* Составляем цикл для перебора всех элементов масива */
{
if(isNaN
(randSimbol
)) /* Если элемент массива не число (это Истина), то... */
{
document.write
(randSimbol
+ " - это не число
"
)
}
else /* Иначе элемент массива - это число (и это Ложь).... */
{
document.write
(randSimbol
+ " - это число
"
)
}
}
}
number (randSimbol ); /* Вызываем функцию */
Вот так работает функция isNaN применительно к числовым объектам Number в Javascript .
методы Number поможет вам работать с числами.
Number методов и свойствПримитивные значения (например, 3,14 или 2014), не может иметь свойства и методы (так как они не являются объектами).
Но с JavaScript, методы и свойства также доступны для примитивных значений, так как JavaScript рассматривает примитивные значения как объекты при выполнении методов и свойств.
toString() МетодtoString() возвращает число в виде строки.
Все методы номер может быть использован на любом типе чисел (литералы, переменные или выражения):
примерvar x = 123;
x.toString(); // returns 123 from variable x
(123).toString(); // returns 123 from literal 123
(100 + 23).toString(); // returns 123 from expression 100 + 23
toExponential() возвращает строку с номером округляется и записываются с помощью экспоненциальной нотации.
Параметр определяет количество символов после запятой:
Параметр не является обязательным. Если вы не укажете его, JavaScript не будет округлить число.
toFixed() МетодtoFixed() возвращает строку с числом, записанным с заданным числом знаков после запятой:
toFixed(2) идеально подходит для работы с деньгами.
toPrecision() МетодtoPrecision() возвращает строку с числом, записанным с определенной длины:
примерvar x = 9.656;
x.toPrecision(); // returns 9.656
x.toPrecision(2); // returns 9.7
x.toPrecision(4); // returns 9.656
x.toPrecision(6); // returns 9.65600
valueOf() возвращает номер как номер.
примерvar x = 123;
x.valueOf(); // returns 123 from variable x
(123).valueOf(); // returns 123 from literal 123
(100 + 23).valueOf(); // returns 123 from expression 100 + 23
В JavaScript, число может быть элементарное значение (typeof = number) или объект (typeof = object) .
valueOf() метод используется внутренне в JavaScript для преобразования номера объектов в примитивные значения.
Там нет причин, чтобы использовать его в вашем коде.
Все типы данных JavaScript имеют valueOf() и toString() метод.
Преобразование переменных в цифрахСуществуют 3 метода JavaScript, которые могут быть использованы для преобразования переменных в числа:
- Number() метод
- parseInt() метод
- parseFloat() метод
Эти методы не являются методами число, но глобальные методы JavaScript.
Глобальные методыJavaScript глобальные методы могут быть использованы на всех типах данных JavaScript.
Это наиболее соответствующие методы, при работе с числами:
Number() МетодNumber() может быть использован для преобразования переменных JavaScript для чисел:
примерx = true;
Number(x); // returns 1
x = false;
Number(x); // returns 0
x = new Date();
Number(x); // returns 1404568027739
x = "10"
Number(x); // returns 10
x = "10 20"
Number(x); // returns NaN
Используется на Date() , то Number() метод возвращает количество миллисекунд, прошедших с 1.1.1970.
parseInt() МетодparseInt() разбирает строку и возвращает целое число. Пробелы разрешены. Только первый номер возвращается:
примерparseInt("10"); // returns 10
parseInt("10.33"); // returns 10
parseInt("10 20 30"); // returns 10
parseInt("10 years"); // returns 10
parseInt("years
10"); // returns NaN
parseFloat() разбирает строку и возвращает число. Пробелы разрешены. Только первый номер возвращается:
примерparseFloat("10"); // returns 10
parseFloat("10.33"); // returns 10.33
parseFloat("10 20 30"); // returns 10
parseFloat("10 years"); // returns 10
parseFloat("years
10"); // returns NaN
Если число не может быть преобразован, NaN (не число) возвращается.
Number СвойстваНомер свойства принадлежит к числу объектов обертку в в JavaScript называется Number .
Эти свойства могут быть доступны только как Number .MAX_VALUE .
Используя myNumber .MAX_VALUE, где myNumber переменная, выражение или значение, будет возвращать неопределенное:
Полное JavaScript Number ReferenceДля получения полной справки, перейдите на наш Complete JavaScript ссылочный номер .