Открыть меню    

Методы javascript для работы со строками

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() , так как она возвращает строку в независимости от типа переменной".

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. Если возвращается нулевое значение, две строки эквивалентны.

Комментарии к статье