Объект String в JavaScript
Объект String используется для работы со строками. И, наверное, в любом языке, в том числе, и в JavaScript, строки занимают очень важное место в прораммировании. И сейчас я Вам расскажу о конструкторе, о свойстве и об основных методах объекта String в JavaScript.
Как и полагается, изучения класса String начинаем с его конструктора, который и создаёт объект String.
var str = new String("javascript");
document.write(str);
Тут всё очевидно и понятно, но всё-таки. В начале создаётся новый объект вызовом конструктора класса String с параметром в виде строки, которую мы хотим получить. Следующим оператором мы выводим этот объект в окно браузера.
Теперь свойство, которое используется очень часто, и его необходимо обязательно знать. Это свойство называется length. Оно позволяет узнать длину строки. Безумно часто используется при работе со строками в JavaScript.
document.write(str.length);
Теперь перейдём к основным методам JavaScript. Первый метод позволяет получить символ по номеру в строке. Нумерация начинается с нуля, поэтому первый символ имеет индекс 0. Давайте используем метод charAt():
var str = new String ("string в javascript javascript");
document.write(str.charAt(0) + str.charAt(3));
В начале мы создаём экземпляр объекта String. Дальше мы, используя метод charAt() получаем 1-ый символ ("s"), потом соединяем с 4-ым ("i") и печатаем получившуюся строку ("si").
Следующий метод, который обязательно надо знать - это indexOf(). Данный метод занимается поиском подстроки в исходной строке и возвращает первый индекс вхождения. Например:
document.write(str.indexOf("ipt"));
Разумеется, не забывайте, что строку, созданную в предыдущем примере никто не отменял. В данном случае Вы увидите, что возвращено будет число "16". Обратите внимание, что если совпадений будет найдено несколько, то вернётся самое первое. А если не найдено ни одного, то вернётся "-1". Также у метода indexOf() существует и второй необязательный параметр, означающий, от какого символа вести поиск:
document.write(str.indexOf("ipt", 17));
В данном случае, результатом выполнения скрипта будет число "27". Очевидно, что данный метод используется в первую очередь для поиска.
Ещё один метод, который применяется при замене подстроки. Метод называется replace() и принимает два параметра: подстроку, которую надо заменить, и подстроку, на которую надо заменить (заменяется только 1-е вхождение):
document.write(str.replace("javascript", "html"));
На выходе получится такая строка: "string в html javascript". Думаю, что данный метод в коментариях не нуждается.
Следующий метод объекта String позволяет получить из исходной строки её часть. Метод называется slice(). Он принимает два параметра: первый индекс, с которого должна начинаться полученная строка, и второй индекс, означающий номер последнего символа, который войдёт в возвращённую строку. В общем, проще показать на примере:
document.write(str.slice(2, 5));
В результате в окне браузера появится строка: "rin". Обратите внимание, что нумерация снова начинается с нуля (и вообще, привыкайте, что нумерация всегда начинается с нуля). Также заметьте, что индекс с номером "2" в результирующую строку вошёл, а индекс с номером "5" уже не вошёл, потому что второй параметр равен как раз 5.
Также у метода slice() есть ещё одна разновидность. Если Вы не укажете второй параметр, то будет возвращена строка, которая начинается с первого индекса и до конца исходной строки.
document.write(str.slice(2));
В результате получится такая строка: "ring в javascript javascript".
И последние два часто используемых метода - это toLowerCase() и toUpperCase(), которые приводят исходную строку к нижнему и верхнему регистру соответственно. Пример:
document.write(str.toLowerCase());
document.write(str.toUpperCase());
Я, думаю, что Вы догадались о том, какой будет результат, но всё-таки советую посмотреть и запомнить эти два очень часто используемых метода.
Вот и все методы, которые мне хотелось рассмотреть в объекте String. Разумеется, это далеко не все. Однако, они являются самыми часто используемыми. И при работе со строками Вы будете их применять многократно.
-
- Михаил Русаков
Комментарии (17):
А чем отличается метод slice() от substring()? Кроме того, что slice() работает с отрицательными значениями?
Ответить
Метод substring() работает исключительно со строками, тогда как slice() может работать ещё и с массивами. Это и есть главное отличие.
Ответить
Есть несколько неточностей: 1. В строке ***document.write(str.replace("javascript", "html");*** в конце не хватает закрывающей скобки. 2. При использовании в таком формате не получается на выходе "string в html html". На выходе получается "string в html javascript". Чтобы получился "string в html html" нужно исеользовать document.write(str.replace(/javascript/g,"html"));
Ответить
Спасибо, исправил!
Ответить
Еще одна неточночность: при вводе document.write(str.slice(2, 5)); на выходе получается текст тольео до 4-го символа "rin", а не "ring".
Ответить
Спасибо, исправил!
Ответить
Какая разница между CharAt и Slice ?
Ответить
метод charAt() работает только с 1 символом(Михаил в примере хорошо это продемонстрировал, благодаря конкатенации (сложению) в результате получилось 2 символа, а не 1). А метод slice() предназначен для работы с множеством символов, и определить в результате не один, а несколько символов без использования сложения. Нк как-то так..
Ответить
Здравствуйте, Михаил! Метод charAt() работает только на чтение символа строки, а есть обратная процедура: запись отдельного символа в требуемое место строки? К примеру, нельзя записать str.charAt(3)=’a’; (ну, записать, конечно, можно, но это не работает). В PHP все просто, там есть операция взятия символа по номеру str{k}, которая работает и на чтение, и на запись, такая конструкция возможна как до знака равенства, так и после. Ничего не вижу, разве что разбить строку посимвольно на массив, сделать что-нибудь похожее на split, и уже потом работать с каждым символом как с элементом индексного массива. Но для функции split нужен разделитель…
Ответить
И вдогонку. Ради шутки попробовал str.charTo(2)='a'. Естественно, не работает. А если серъезно, почему нет такого метода?
Ответить
Спросите у разработчиков языка) наверное,потому,что в javascript не существует такого понятия как символы. Любой символ - это строка с определённым символом
Ответить
Спасибо, Александр, за оперативный ответ. Думаю, разработчики языка как небожители, до них и высоко и далеко. На всякий случай заглянул к Кантору (http://javascript.ru/String). Действительно, нет таких методов работы со строками, символы можно только считывать, но не менять, а жаль. Но, все-таки, к строке можно обращаться как к массиву символов, т.е. записи str.charAt(i) и str[i] эквивалентны. Проверил, работает, код компактнее, но работают квадратные скобки, естественно, только на чтение. Значит, остается вручную резать строку посимвольно на обычный массив, а после обработки обратно преобразовывать в строку, как, например, в функции join. Но, это будет слишком громоздко и медленно.
Ответить
да...поэтому не очень удобно использовать) ну,язык то весьма примитивный,так что о чём тут говорить)
Ответить
Вы правы, Александр, язык примитивный. Но есть одно неоспоримое преимущество, из-за которого приходится выжимать из этого языка все, что можно. Ведь когда выполняешь длительные расчеты на PHP, час и более, понятия не имеешь, что там программа наработала, пока расчеты не закончатся, даже если все происходит на локальном сервере. А в JS все отладочные и промежуточные контрольные распечатки идут на мониторе сразу же, синхронно с расчетами. Особенно это важно при отладке алгоритма, например, в случае зацикливания.
Ответить
ну,тоже верно) Все языки важны
Ответить
Спасибо за диалог, с наступающим!
Ответить
Вас также =)
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.