JavaScript для детей — страница 7 из 48

36 Часть I. Основы

Как узнать длину строки

Чтобы узнать длину строки, достаточно добавить к ее концу .length:

Length — длина

"Суперпупердлиннаястрока".length;

23

Можно добавлять .length к концу как самой строки, так и перемен-

ной, содержащей строку:

var java = "Java";

java.length;

4

var script = "Script";

script.length;

6

var javascript = java + script;

javascript.length;

10

Здесь мы присвоили строковое значение "Java" переменной java,

а значение "Script" — переменной script. Затем мы добавили

.length к концу каждой из переменных, узнав таким образом длины

отдельных строк, а также длину составленной из них новой строки.

Обратите внимание: я говорил «можно добавлять .length к концу

как самой строки, так и переменной, содержащей строку». Это касается

очень важного свойства переменных: в любом месте программы, где

допустимо использовать число или строку, можно также использовать

переменную, в которой хранится число или строка.

Получение отдельного символа строки

Иногда требуется получить из строки одиночный символ. Например, вы

можете зашифровать в наборе слов тайное послание, состоящее из вто-

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

получить все вторые символы и объединить их в новую строку.

Чтобы получить символ, стоящий в определенной позиции строки,

используйте квадратные скобки — []. Возьмите строку (или перемен-

ную, в которой хранится строка) и поставьте сразу после нее квадратные

скобки, в которых указана позиция нужного символа. Например, чтобы

получить первый символ строковой переменной myName, используйте

запись myName[0]:

2. Типы данных и переменные 37

var myName = "Ник";

myName[0];

"Н"

myName[1];

"и"

myName[2];

"к"

Обратите внимание — чтобы получить первый символ, мы указали

в скобках позицию 0, а не 1. Дело в том, что JavaScript (как и многие

другие языки программирования) ведет отсчет символов с нуля. Таким

образом, для получения первого символа строки указывайте позицию 0,

второго — 1 и т. д.

Попробуем разгадать наш тайный шифр, где во вторых буквах неко-

торого набора слов скрыто послание. Вот как это сделать:

Сode word —

var codeWord1 = "обернись";

кодовое

var codeWord2 = "неужели";

слово

var codeWord3 = "огурцы";

var codeWord4 = "липкие";

var codeWord5 = "?!";

codeWord1[1] + codeWord2[1] + codeWord3[1] + codeWord4[1] + 

codeWord5[1];

"беги!"

! Страницы этой книги недостаточно широки, чтобы напечатать

выражение, в котором мы объединяем буквы, одной строкой.

Значками помечены места, где код пришлось перенести на сле-

дующую строку. Однако вы, вводя этот код в компьютер, можете

напечатать его без переносов.

И снова обращаю внимание — второй символ каждой строки мы

получаем, указав позицию 1.

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


Slice — часть

Чтобы получить часть, или «срез», строки, используйте slice. Например,

представьте, что вам нужен отрывок из длинного описания фильма для

анонса на вашем сайте. Чтобы воспользоваться slice, поставьте в конце

строки (или переменной, содержащей строку) точку, а после нее слово

slice и круглые скобки. В скобках укажите позицию первого символа

той части строки, которую вы хотите получить, затем запятую, а затем

позицию последнего символа. На рис. 2.2 показано, как использовать

slice.

38 Часть I. Основы

Эти два числа

задают начало и конец среза.

строка

Рис. 2.2. Использование slice для получения среза строки

Например:

Long string —

var longString = "Эта длинная строка такая длинная";

длинная

longString.slice(4, 18);

строка

"длинная строка"

Первое число в скобках — позиция символа, с которого начинается

срез, а второе число — позиция символа, который следует за последним

символом среза. На рис. 2.3 показано, каким символам соответствуют эти

значения. Начальная (4) и конечная (18) позиции выделены синим цветом.

Э т а

д л и н н а я

с т р о к а

т а к а я

д л и н н а я

0 1 2 3

4

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Рис. 2.3. В нашем примере slice возвращает символы, обведенные серой рамкой

По сути, мы попросили JavaScript: «Вырежи из этой длинной строки

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

до позиции 18».

Если указать в скобках после slice только одно число, мы получим

строку-срез, которая начинается с данной позиции и длится до конца строки:

var longString = "Эта длинная строка такая длинная";

longString.slice(4);

"длинная строка такая длинная"

Перевод строки в заглавный или строчный регистр

Если нужно вывести какой-нибудь текст заглавными буквами, восполь-


To upper

зуйтесь toUpperCase.

case —

в верхний

регистр

"Эй, как дела?".toUpperCase();

"ЭЙ, КАК ДЕЛА?"

2. Типы данных и переменные 39

.toUpperCase() возвращает новую строку, все буквы в ко то рой —

заглавные.

To lower case —

Можно произвести и обратную операцию, использовав toLowerCase:

в нижний

регистр

"эЙ, кАК деЛа?".toLowerCase();

"эй, как дела?"

.toLowerCase() делает все символы строчными. Но ведь по прави-

лам предложение должно начинаться с заглавной буквы? Как сделать

первый символ строки заглавным, а остальные — строчными?

! Попробуйте сами разобраться, как с помощью только что изученных

команд превратить строку "эЙ, кАК деЛа?" в "Эй, как дела?" .

Если ничего не выходит, сверьтесь с разделами, где рассказывается

о получении символа строки и использовании slice . Когда закон-

чите, вернитесь к этому месту и сравните свое решение с моим.

Вот один из вариантов решения:

Silly string —

 var sillyString = "эЙ, кАК деЛа?";

буквально

 var lowerString = sillyString.toLowerCase();

«глупая

 var firstCharacter = lowerString[0];

строка»

 var firstCharacterUpper = firstCharacter.toUpperCase();

Lower string —

 var restOfString = lowerString.slice(1);

здесь «строка

 firstCharacterUpper + restOfString;

в нижнем

"Эй, как дела?"

регистре»

First character —

Давайте разберем этот код построчно.

здесь «первая

В строке мы создаем новую перемен-

буква»

ную sillyString и кладем в нее строку,

First character

которую собираемся изменить. В строке 

upper — здесь

мы с помощью .toLowerCase() получаем

«первая буква

версию sillyString, где все буквы строч-

в верхнем

ные ("эй, как дела?"), и кладем ее в новую

регистре»

переменную lowerString.

Rest of string —

В строке  мы с помощью операции [0] по-

оставшаяся

лучаем первый символ lowerString (это «э»)

часть строки

и сохраняем это значение в переменной

fi rstCharacter (напоминаю, позиция 0

соответствует первому символу). Затем

в строке  мы переводим fi rstCharacter

в верхний регистр и сохраняем в переменной fi rstCharacterUpper.

В строке  мы с помощью slice получаем все символы

lowerString, начиная со второго ("й, как дела?"), и сохраняем их

в переменной restOfString. И наконец, в строке  мы объединяем

40 Часть I. Основы

fi rstCharacterUpper («Э») и restOfString, что дает нам искомую

строку "Эй, как дела?".

Поскольку значения и переменные взаимозаменяемы, можно заме-

нить строки со  по  единственной строкой:

var sillyString = "эЙ, кАК деЛа?";

sillyString[0].toUpperCase() + sillyString.slice(1). 

toLowerCase();

"Эй, как дела?"

Однако понять такой код сложнее, так что имеет смысл решать слож-

ные задачи вроде этой пошагово, с помощью переменных — по крайней

мере до тех пор, пока вы не привыкнете читать сложный код.

Булевы значения

Теперь поговорим о булевых значениях. В сущности, есть лишь два вари-

анта таких значений — это либо true (истина), либо false (ложь).

Например, вот простое выражение с булевым значением:

var javascriptIsCool = true;

Javascript

javascriptIsCool;

is cool —

true

Javascript —

это круто

Здесь мы создали новую переменную с именем javascriptIsCool

и присвоили ей булево значение true. Следующей строкой мы запро-

сили содержимое javascriptIsCool и, разумеется, получили true.

Логические операции

Подобно тому как числа можно объединять с помощью математических

операторов (+, −, *, / и других), булевы значения можно объединять

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

составленного из булевых значений и булевых операторов, всегда будет

другое булево значение (либо true, либо false).

Три основных булевых оператора — это &&, || и !. Выглядят они

странновато, однако после небольшой практики пользоваться ими будет

несложно. Давайте познакомимся с ними поближе.

&& (И)

Оператор && означает «и». Вслух его называют «и», либо «и-и», либо «ампер-

санд-амперсанд» (амперсандом называется символ &). Используйте опе-

ратор && с двумя булевыми значениями, когда нужно узнать, равны ли

они оба true.

2. Типы данных и переменные 41