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