Главная
Простейшие операторы
Операторы условия
Циклы
Массивы
Массивы II
Строки
Функции I
Функции II
|
Свойства и методы объекта String
length. С этим свойством мы уже знакомы: оно определяет количество символов в
строке:
-
<script>
s=prompt("Введите какое-нибудь слово", "");
alert("В вашем слове " +s.length +" букв");
</script>
concat(). Объединяет две строки в одну. Данный метод должен быть хорошо вам
знаком из массивов, поэтому мы не будем на нем подробно останавливаться.
charAt(). Если в скобках указать число, то JScript прочтет символ стоящий в
строке на этом месте:
-
<script>
s=prompt("Введите слово", "");
x=prompt("И число", "");
alert("На " +x+ "-м месте в вашем слове стоит символ " +s.charAt(x));
</script>
Данный метод можно присваивать и какой-либо переменной.
indexOf(x, y). Возвращает номер элемента, равного x, при этом поиск начинается с
элемента, стоящего под номером y.
-
<script>
s=prompt("Введите какую-нибудь фразу", "");
x=prompt("И что-нибудь более короткое для поиска в фразе", "");
y=prompt("С какого элемента следует начать поиск?", "");
alert("Первый раз слово для поиска встречается на " +s.indexOf(x,y)+ "-м
элементе");
</script>
Если строки x нет в строке s, то возвращается значение "-1". Если y не указан
или меньше нуля, то поиск начинается с 0-вого элемента.
lastIndexOf(x, y). Все то же самое, только возвращает номер последней
встреченной подстроки x:
-
<script>
s=prompt("Введите какую-нибудь фразу", "");
x=prompt("И что-нибудь более короткое для поиска в фразе", "");
y=prompt("С какого элемента следует начать поиск?", "");
alert("Последний раз слово для поиска встречается на " +s.lastIndexOf(x,y)+
"-м элементе");
</script>
y при неуказании считается равным номеру последнего элемента строки.
Упражнение 30 Вывести номера всех элементов, равных символу пробел (" ") в введенном
пользователем слове.
slice(). Извлекает часть строки, работает также, как и с массивами. В следующем
примере, программа оставляет из фразы, введенной пользователем, только одно
слово:
-
<script>
s=prompt("Введите фразу", "");
x=s.indexOf(" ");
s2=s.slice(0, x);
alert("Вся фраза: \""+s+"\"\nВырезанное слово: \"" +s2+"\"');
</script>
Посмотрите, как происходит вырезка при отрицательном значении x.
substr(x, y). Опять извлекает часть строки длиной в y элементов, начиная с
элемента номер x.
substring(). Идентичен методу slice(), только отрицательные аргументы в скобках
здесь заменяются на нуль.
split(). Разбивает исходную строку на массив подстрок. В скобках указывается
разделитель: каждый элемент создающегося массива равен подстроке от одного
разделителя до следующего. Например, для строки "а1б1в1г1д1" метод
"а1б1в1г1д1".split(1) вернет массив "а", "б", "в", "г", "д".
Мы пропустили одну тему - "Регулярные выражения", а теперь она нам нужна.
Регулярные выражения позволяют более гибко организовать условия поиска.
Регулярные выражения чем-то напоминают специальные символы, вот таблица этих
выражений, но перед этим отметим, что регулярные выражения должны браться в
символы / и / (/т/ соответствует букве т, при этом /т/ понимается как регулярное
выражение).
Символ
|
Описание
|
\ |
/n/ найдет символ n, а /\n/ найдет
символ перевода на новую строку. При этом /^/ найдет символ как начало строки, а
/\^/ найдет символ "крыша"
|
^ |
Уже обмолвились об этом - начало строки
|
$ |
Конец строки
|
* |
Соответствует повторению предыдущего символа ноль
или более раз |
+ |
Повторение предыдущего символа один или более раз |
? |
Повторению предыдущего символа ноль или один раз |
. |
Любой символ, кроме символа новой строки |
( ) |
В скобках указывается строка для поиска, которую
программа найдет и запомнит |
(?: ) |
То же самое, но без запоминания. Например,
/учени(?:к|ца) соответствует сразу двум словам: ученик и
ученица |
(?= ) |
Если в предыдущем примере, заменить ?: на
?= ,
то будут находиться слова ученик, ученица, но не учение |
(?! ) |
Наоборот. Будет искать слова учение и др., но не
ученик и не ученица |
| |
Например,
ученик|ученица соответствует слову ученик или
ученица |
{n} |
n - неотрицательное число. Соответствует
n вхождениям предыдущего символа |
{n,} |
То же самое, только n и более вхождений |
{n,m} |
Не менее чем n и не более чем m
вхождений предыдущего символа |
[ ] |
Любой символ из квадратных скобок |
[^ ] |
Любой символ, кроме заключенных в квадратные скобки |
[ - ] |
Любой символ из указанного диапазона |
\b |
Позиция между словом и пробелом или переводом на
новую строку |
\B |
Любая позиция, кроме границы слова |
\d |
Любая цифра |
\D |
Все что угодно, кроме цифры |
\f |
Символ перевода формата (FF) |
\n |
Символ перевода строки (LF) |
\r |
Символ возврата каретки (CR) |
\s |
Символ пробела |
\S |
Все что угодно, кроме пробела |
\t |
Символ табуляции (HT) |
\v |
Символ вертикальной табуляции (VT) |
\w |
Любая латинская буква, цифра или символ
подчеркивания |
\W |
Все, кроме латинских букв, цифр или символа
подчеркивания |
\n |
n - положительное число. Соответствует n-ной
запомненной подстроке |
\0n |
Символ с восьмеричным кодом n |
\xn |
Символ с шестнадцатеричным кодом n |
\un |
Символ Unicode с шестнадцатеричным кодом n |
Упражнение 31
"Скрипт для веб-формы". Пользователь вводит ЧТО-ТО, возможно, используя
HTML-таги. Ваша задача вывести на экран то, что ввел пользователь, не учитывая
таги. Вторым необязательным аргументом метода split() является число -
максимальный размер массива.
match(). В скобках указывается регулярное выражение, которое программа будет
пытаться найти в строке. В случае, если она найдет такое выражение, то в новый
массив запишутся все подстроки с этим выражением.
-
<script>
s=prompt("Введите фразу с цифрами", "");
var a=s.match(/\d/);
alert("Ваша фраза: \"" +s+ "\"\nВстреченные цифры: "+a);
</script>
Чтобы программа искала все цифры, а не останавливалась на первой найденной
следует добавить символ g
-
<script>
s=prompt("Введите фразу с цифрами", "");
var a=s.match(/\d/g);
alert("Ваша фраза: \"" +s+ "\"\nВстреченные цифры: "+a);
</script>
replace(). В скобках указывается регулярное выражение и строка, на которую будут
заменяться найденные подстроки, соответствующие регулярному выражению. В
следующей программе мы заменим все маленькие буквы "а" на большие - "А":
-
<script>
s=prompt("Введите предложение", "");
var a=s.replace("а", "А");
alert("Ваше предложение: "+s+"\na: "+a);
</script>
Мы использовали нерегулярное выражение, и замена маленьких букв остановилась на
первой встреченной букве "а". А вот как это сделать регулярным выражением:
-
<script>
s=prompt("Введите предложение", "");
var a=s.replace(/\u0430/g, "А");
alert("Ваше предложение: "+s+"\na: "+a);
</script>
search(), Если то, что в скобках есть в строке, возвращается значение номера
элемента, где это впервые встретилось. Если нет, то возвращается "-1". Для
регулярных выражений опция глобального поиска (/ /g) игнорируется, но, как и
всегда, не игнорируется опция / /i, которая позволяет программе не обращать
внимания на различия в регистре букв. В следующей программе мы проверим ввел ли
пользователь русскую букву "а":
-
<script>
s=prompt("Введите что-нибудь", "");
var x=s.search(/\u0430/i);
if (x!=-1) {alert("Впервые буква \"а\" встречается в вашей фразе на месте
№"+x)}
else {alert("В вашей фразе нет буквы \"а\"")};
</script>
charCodeAt(). Если в скобках указать число, то JScript выведет код Unicode
стоящего там символа:
-
<script>
s=prompt("Введите слово", "");
x=prompt("И число", "");
alert("На " +x+ "-м месте в вашем слове стоит символ, чей код равен "
+s.charCodeAt(x));
</script>
Данный метод можно присваивать и какой-либо переменной.
fromCharCode(). В скобках, через запятую следует перечислить коды символов, и
будет создана новая строка из таких символов. Обязательно просмотрите код:
-
<script>
s=String.fromCharCode(169, 174, 8482, 9792, 9794);
document.write("<tt><big>Известны следующие символы, связанные с защитой прав:
"+s+"</tt></big>");
</script>
toLowerCase(). Делает все буквы строки маленькими:
-
<script>
s=prompt("Введите слово", "");
alert("не церемонься! вводи маленькими буквами: " +s.toLowerCase());
</script>
Данный метод можно присваивать и какой-либо переменной.
toUpperCase(). Делает все буквы заглавными:
-
<script>
s=prompt("Введите слово", "");
alert("Что означает это твое " +s.toUpperCase());
</script>
Остается только напомнить, что строки можно складывать (оператор +) и вычитать
(оператор −). Упражнение 32<
Подсчитать сколько букв "а" (включая и латинские, и русские, и большие, и
маленькие) в введенном пользователем слове. Еще несколько методов доступны
только при применении document.write():
Метод |
Аналог |
Результат |
anchor("имя") |
<a name="имя"> |
Какой-то текст document.write("Какой-то
текст".anchor("имя")) |
link("URL") |
<a href="URL"> |
Какой-то текст document.write("Какой-то текст".link("#имя")) |
big() |
<big> |
Какой-то текст
document.write("Какой-то текст".big()) |
small() |
<small> |
Какой-то текст
document.write("Какой-то текст".small()) |
sup() |
<sup> |
Какой-то текст
document.write("Какой-то текст".sup()) |
sub() |
<sub> |
Какой-то текст
document.write("Какой-то текст".sub()) |
fixed() |
<tt> |
Какой-то текст document.write("Какой-то текст".fixed()) |
bold() |
<b> |
Какой-то текст document.write("Какой-то текст".bold()) |
italics() |
<i> |
Какой-то текст document.write("Какой-то текст".italics()) |
strike() |
<s> |
Какой-то текст document.write("Какой-то текст".strike()) |
blink() |
<blink> |
Какой-то текст document.write("Какой-то текст".blink()) |
fontcolor(цвет) |
<font color=цвет> |
Какой-то текст
document.write("Какой-то текст".fontcolor("#330099")) |
fontsize(размер) |
<font size=размер> |
Какой-то текстdocument.write("Какой-то
текст".fontsize(5)) |
[В начало]
|