JavaScript с нуля - [33]

Шрифт
Интервал

Метод substr

Следующий подход для разделения строк — метод substr. Он также работает с двумя аргументами:

let newString = substr(start, length);

Первый из них является числом, определяющим стартовую позицию, а второй представляет число, задающее длину итоговой подстроки. Станет понятнее, если взглянуть на следующие примеры:

let theBigString = "Pulp Fiction is an awesome movie!";

console.log(theBigString.substr(0, 4)); // Pulp

Наша подстрока начинается с нулевой позиции и отсчитывает четыре знака вперед. Поэтому возвращается Pulp. Если мы захотим извлечь слово Fiction, то код будет выглядеть так:

let theBigString = "Pulp Fiction is an awesome movie!";

console.log(theBigString.substr(5, 7)); // Fiction

Если мы не определим длину, возвращаемая подстрока будет содержать знаки от стартовой позиции и до конца:

let theBigString = "Pulp Fiction is an awesome movie!";

console.log(theBigString.substr(5)); // Fiction is an awesome movie!

Есть еще несколько вариаций передачи значений в метод substr, но эти являются основными.

Разделение строки с помощью split

То, что вы можете объединить, можно и разделить на части. Я уверен, что это изречение одного из мудрецов. Еще одним способом разделения строк является метод split. Вызов этого метода для строки возвращает массив подстрок. Точки же разделения изначальной строки на подстроки мы определяем знаком или регулярным выражением (RegExp).

Давайте взглянем на простой пример:

let inspirationalQuote = "That which you can concatenate, you can

also split apart.";

let splitWords = inspirationalQuote.split(" ");


console.log(splitWords.length); // 10

Здесь мы разделяем текст inspirationalQuote в местах пробелов. При каждой встрече со знаком пробела оставшаяся позади часть массива удаляется и становится элементом возвращаемого массива.

Вот другой пример:

let days = "Monday,Tuesday,Wednesday,Thursday,Friday, Saturday,Sunday";

let splitWords = days.split(",");


console.log(splitWords[6]); // Sunday

У нас есть переменная days, содержащая строку дней, разделенных запятыми. Если мы хотим отделить каждый день, то можем использовать метод split с запятой в качестве разделителя. Конечным результатом будет массив из семи элементов, каждый из которых будет представлять день недели из оригинальной строки.

Вас удивит, как часто вы будете использовать метод split для разрыва последовательности знаков, которая может быть как простым предложением, так и сложными данными, возвращаемыми веб-службой.

Поиск по строке

Если нам вдруг понадобится найти знак(и) в строке, мы можем использовать методы indexOf, lastIndexOf и match. Сперва рассмотрим indexOf.

Этот метод получает искомый нами знак(и) в качестве аргумента. Если он его (их) находит, то возвращает позицию индекса строки, где происходит первое включение. Если совпадений не обнаруживается, indexOf возвращает -1. Посмотрим на пример:

let question = "I wonder what the pigs did to make these birds so

angry?";

console.log(question.indexOf("pigs")); // 18

Мы пытаемся выяснить, есть ли pigs (свиньи) в нашей строке. Так как искомый элемент существует, метод indexOf сообщает нам, что первое включение этого слова встречается в 18-м индексе. Если же мы ищем что-либо несуществующее вроде буквы z в следующем примере, возвращается значение -1:

let question = "I wonder what the pigs did to make these birds so

angry?";

console.log(question.indexOf("z")); // -1

Метод lastIndexOf очень похож на indexOf. Как можно догадаться по его имени, он возвращает индекс последнего включения искомого элемента:

let question = "How much wood could a woodchuck chuck if

a woodchuck could chuck wood?";

console.log(question.lastIndexOf("wood")); // 65

Вы можете определить еще один аргумент для описанных методов indexOf и lastIndexOf. Помимо указания искомых знаков вы можете также определить индекс строки, с которого нужно начать поиск:

let question = "How much wood could a woodchuck chuck if

a woodchuck could chuck wood?";

console.log(question.indexOf("wood", 30)); // 43

Последнее, что стоит упомянуть об indexOf и lastIndexOf, — это то, что вы можете сопоставлять любой экземпляр знаков, существующих в строке. При этом не важно, делаете вы это для целых слов или того, что ищете в виде более крупного набора знаков. Обязательно это учитывайте.

Прежде чем подвести итог, давайте рассмотрим метод match. В его случае у вас уже меньше контроля. Этот метод в качестве аргумента получает regexp:

let phrase = "There are 3 little pigs.";

let regexp = /[0–9]/;


let numbers = phrase.match(regexp);


console.log(numbers[0]); // 3

Здесь также возвращается массив совпадающих подстрок, поэтому будет уместно применить свои навыки работы с массивами, чтобы налегке продолжить работу с результатом. Работу с регулярными выражениями мы с вами затронем позже.

Строки в нижнем и верхнем регистрах

Под конец давайте рассмотрим то, что не потребует сложных объяснений. Для изменения регистра строки мы можем использовать методы с соответствующими именами, а именно toUpperCase для подъема в верхний регистр и toLowerCase для приведения в нижний. Взгляните на пример:

let phrase = "My name is Bond. James Bond.";


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.