JavaScript объект String

Поддержка строк в JavaScript обеспечивается объектом String(), который позволяет манипулировать и форматировать строки текста и выполнять поиск подстрок в строках.

В таблице представлены свойства и методы строк объекта String объекта DOM, наиболее часто применяемые в сценариях:

Свойство Пояснение

  • string.length Длина (количество символов) строки
  • string.prototype Ссылка на прототип класса объекта. Это свойство позволяет добавлять в объекты новые методы.
  • Метод Пояснение
  • str1.bold() Выводит содержимое строки полужирным шрифтом так, как будто строка заключена в теги <b></b>
  • str1.italics() Выводит содержимое строки курсивом так, как будто строка заключена в теги <i></i>
  • str1.strike() Выводит содержимое строки перечеркнутым так, как будто строка заключена в теги <s></s>
  • str1.big() Выводит содержимое строки шрифтом на единицу большим, чем текущий так, как будто строка заключена в теги <big></big>
  • str1.small() Выводит содержимое строки шрифтом на единицу меньшим, чем текущий так, как будто строка заключена в теги <small></small>
  • str1.sub() Выводит содержимое строки со смещением вниз относительно базовой линии так, как будто строка заключена в теги
  • str1.sup() Выводит содержимое строки со смещением вверх относительно базовой линии так, как будто строка заключена в теги
  • str1.fixed() Выводит содержимое строки моноширным шрифтом так, как будто строка заключена в теги <tt></tt>
  • str1.fontSize(size) Выводит содержимое строки шрифтом указанного размера так, как будто строка заключена в теги <font size="size"></font>
  • str1.fontColor(color) Выводит содержимое строки шрифтом указанного цвета так, как будто строка заключена в теги <font color="color"></font>
  • str1.link(url) Возвращает содержимое строки как гиперссылку на указанный ресурс
  • str1.toUpperCase() Возвращает строку в верхнем регистре
  • str1.toLowerCase() Возвращает строку в нижнем регистре
  • string str1.charAt(index) Возвращает символ строки из указанной позиции
  • number str1.charCodeAt(index) Возвращает Unicode - код символа строки из указанной позиции
  • number str1.indexOf(str2[, start]) Возвращает позицию, с которой начинается первое вхождение подстроки str2 в строку str1.
  • Если указан параметр start, поиск подстроки начинается с указанной позиции. Если подстрока str2 в строке str1 не найдена, метод возвращает -1.
  • number str1.lastIndexOf(str2[, end) Возвращает позицию, с которой начинается последнее вхождение подстроки str2 в строку str1.
  • Если указан параметр end, поиск подстроки начинается с указанной позиции. Если подстрока str2 в строке str1 не найдена, метод возвращает -1.
  • string str1.slice(start[, end]) Возвращает часть строки от позиции start и заканчивая позицией end не включительно. Если параметр end опущен, подстрока продолжается до конца строки.
  • string str1.substring(start[, end]) Возвращает часть строки от позиции start и заканчивая позицией end не включительно. Если параметр end опущен, подстрока продолжается до конца строки. В качестве начальной позиции выступает меньшее из двух указанных значений, т.е. вызовы substring(0,5) и substring(5,0) эквивалентны.
  • string str1.substr(start[, length]) Возвращает часть строки указанной длины начиная с позиции start. Если параметр length равен 0 или имеет отрицательное значение, возвращается пустая строка.Если параметр length не указан, подстрока продолжается до конца строки.
  • array str1.split(seperator[, limit]) Разбивает строку str1 на подстроки, разделяемые в строке указанным разделителем и возвращает массив подстрок. Параметр limit служит для ограничения количества элементов в результирующем массиве

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

Методы, форматирующие вывод применяются в тех случаях, когда необходимо вывести строку на страницу не просто как текстовый фрагмент, а еще и снабдить ее определенным форматом, то есть вывести строку полужирной, курсивом или заданным цветом текста. Безусловно, можно обойтись и без использования данных функций, однако при этом придется предпринимать дополнительные действия для форматирования вывода. Следует помнить, что функции, форматирующие вывод, не изменяют содержимого строки, они возвращают отформатированную строку.

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

Листинг: Применение методов форматирования вывода строк

var titles = new Array("Хостинг Консультант","Rambler", "Yandex", "Google", "Altavista");
var urls   = new Array("https://dieg.info","http://www.rambler.ru", "http://www.ya.ru", 
             "http://www.google.com", "http://www.altavista.com");
 
for (var i=0; i<titles.length; i++) {
    document.write (titles[i].bold()+": "+urls[i].link(urls[i])+"<br />");
}

Приведенный выше фрагмент кода сначала выводит полужирным начертанием название поискового сервера (элементы массива "titles" - заголовки), а, затем, саму гиперссылку из массива "urls", причем, текст гиперссылки и адрес ресурса совпадают.

Для сравнения, ниже приводится строка вывода на страницу без использования вышеописанных методов:

document.write ("<b>"+titles[i]+"</b>: <a href='"+urls[i]+"'>"+urls[i]+"</a><br />")

;

Методы indexOf() и lastIndexOf() применяются в тех ситуациях, когда необходимо проверить, является ли некоторая последовательность символов частью строки. Такая необходимость может возникнуть, например, при проверке достоверности данных, введенных пользователем. Приведем простой пример: от пользователя требуется ввести адрес электронной почты а сценарий должен проверить корректность ввода (упрощенно):

Листинг: Пример применения метода 'indexOf()'

var email;
do {
    email = prompt ("Введите свой e-mail:","")
    if (email.indexOf("@") == -1) {
        alert ("Введенный e-mail синтаксически некорректен!\nПовторите операцию.");
    }
    else 
        break;
} while (true);
alert ("Спасибо за сотрудничество!");

Сценарий в бесконечном цикле запрашивает у пользователя ввод e-mail адреса и проверяет наличие в нем символа "@". Если таковой отсутствует, метод indexOf("@") вернет значение -1 и пользователь получит сообщение об ошибке, после чего запрос повторится. Цикл будет продолжаться до тех пор, пока пользователь не введет строку, содержащую символ "@". Совершенно очевидно, что проверка корректности адреса, введенного пользователем, не претендует на полноту и ее запросто можно обойти, введя при запросе символ "@".

Еще один пример демонстрирует применение метода indexOf() с параметром "start". Пример позволяет вычислить вероятность появления некоторого символа (например - 'а') в произвольном тексте:

var text="Карл у Клары украл кораллы, Клара у Карла украла кларнет.";
var count=0, start=0;
do {
    start=text.indexOf("а", start);
    if (start > 0) 
        count++;
} while (start > 0);
alert ("Символ 'а' всречается в строке с вероятностью "+count/text.length*100+"%");

Все три метода, как следует из таблицы, служат для получения части строки. Эти методы так же можно применить при проверке данных. Например, из адреса электронной почты пользователя необходимо выделить в отдельные строки логин пользователя (символы, находящиеся перед символом "@") и адрес почтового сервера (символы, находящиеся после символа "@") с целью их дальнейшей проверки. Упрощая ситуацию, проверим наличие "." в адресе почтового сервера и отсутствие "." в логине пользователя:

Листинг: Получение подстроки

var email;
do {
    email = prompt ("Введите свой e-mail:","username@host.com")
    var pos1 = email.indexOf("@");
    if (pos1 == -1) {
        alert ("Введенный e-mail синтаксически некорректен!\nПовторите операцию.");    
    }
    else {
        var userName = email.substring(0, pos1); 
        var host = email.slice(pos1+1); 
 
        if (userName.indexOf(".") != -1) 
            alert ("Введенный e-mail синтаксически некорректен!\nПовторите операцию.");
        else if (host.indexOf(".") == -1)
            alert ("Введенный e-mail синтаксически некорректен!\nПовторите операцию.");
        else 
            break;	
    }    
} while (true);
alert ("Спасибо за сотрудничество!");

После такой доработки проверка стала значительно лучше, хотя она все еще не универсальна. Теперь пользователь должен вводить символы до "@" без точек, а символы после "@" обязательно должны содержать хотя бы одну точку.

Метод split() можно с успехом применять для ввода массивов с клавиатуры. Ниже на примере демонстрируется одна из возможных реализаций этого подхода:

Листинг: Применение метода 'split()'

var s = prompt ("Введите несколько числовых значений, разделенных запятыми:", "1,2,5,0,3,7");
var a = s.split(",");
var sum=0;
for (var i=0; i<a.length; i++)
    sum+=parseInt(a[i]);
 
alert ("Сумма элементов введенного массива: "+sum);

О функции split() необходимо сказать то, что она поддерживает регулярные выражения, к изучению которых мы вскоре приступим. Это означает, что вместо фиксированной строки-разделителя (например - ",") можно использовать шаблон, маску разделителя. В последнем случае сценарий станет намного эффективнее и универсальнее.

PQ VPS сервера в 28+ странах.