Методы javascript для работы со строками
Когда я пишу на javascript, то приходится часто обращаться к поисковым системам, с целью уточнить синтаксис методов (и порядок, определение аргументов) работающих со строками.
В этой статье я постараюсь привести примеры и описание наиболее распространенных методов javascript связанных со строками. Наиболее популярные методы для удобства расположены в верхней части статьи.
Преобразовываем в строку
Вы можете преобразовать число, булево значение или объект в строку.
var myNumber = 24; // 24
var myString = myNumber.toString(); // "24"
Вы также можете совершить подобную манипуляцию при помощи функции
string()
.
var myNumber = 24; // 24
var myString = String(myNumber); // "24"
Николас Закас говорит: "Если вы не уверены в значении (
null
или
undefined
), то используйте функцию
String()
, так как она возвращает строку в независимости от типа переменной".
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. Если возвращается нулевое значение, две строки эквивалентны.
Комментарии к статье