Выбрать главу

К примеру, вот рабочий вариант:

let textA = "Please";

let textB = new String("stop!");

let combined = textA + " make it " + textB;

console.log(combined);

Несмотря на все это смешение, тип переменной combined будет простым строчным примитивом.

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

let foo = "I really";

let blah = "why anybody would";

let blarg = "do this";

let result = foo.concat(" don't know", " ", blah, " ", blarg);

console.log(result);

В большинстве случаев для этой цели можете просто использовать подход с + и +=. Он быстрее, чем метод concat. А если нет разницы, то почему бы не повысить скорость кода?

Получение подстрок из строк

Иногда мы заинтересованы в определенном отрезке знаков отдельной части строки. Для удовлетворения такого интереса служат два метода — slice и substr. Предположим, у нас есть следующая строка:

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

Давайте с ней немного поработаем.

Метод slice

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

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

console.log(theBigString.slice(5, 12));

В этом примере мы извлекаем знаки между индексами 5 и 12. В итоге будет возвращено слово Fiction.

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

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

console.log(theBigString.slice(0, -6));

То же касается и определения начальной точки, которая при отрицательном значении вычисляется также с конца строки:

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

console.log(theBigString.slice(-14, -7));

Мы только что рассмотрели три варианта использования метода slice. Я всегда использовал только первый способ с положительными значениями начала и конца нужного отрезка, и вы, вероятно, последуете тем же путем.

Метод 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 с запятой в качестве разделителя. Конечным результатом будет массив из семи элементов, каждый из которых будет представлять день недели из оригинальной строки.