Мы уже не раз использовали строковые литералы, которые представляют собой последовательность символов, заключенную в одинарные или
двойные кавычки. Все строки являются объектами типа String и с ними можно производить некоторые действия, например,
мы уже знакомы с операцией конкатенации, т.е. объединения строк. В этом уроке посмотрим другие возможности работы со строками.
Для начала определимся с некоторыми понятиями:
Алфавит - конечное множество символов.
Строка - конечная последовательность символов некоторого алфавита.
Пустая строка - строка, не содержащая ни одного символа.
Чтобы создать строковый объект можно воспользоваться конструктором newString. Например:
var s = newString("Итого:");
Если применить единственное свойство объекта String - length, то мы узнаем длину строки.
Для нашего примера, результатом выполнения s.length будет число 6.
Рассмотрим методы, влияющие на строку:
charAt(n) - возвращает символ, позицию которого определяет параметр n.
Для нашего примера, результатом выполнения s.charAt(0) будет буква "И".
substr(n1,n2) - возвращает подстроку из строки, где n1 - позиция первого символа
подстроки, а n2 - количество символов в строке. Для нашего примера, результатом выполнения
s.substr(0, 4) будет подстрока "Итог".
Для примера напишем сценарий, который будет определять, сколько раз заданное слово встречается в определенном тексте.
Код html-страницы будет следующим:
javascript строки
Теперь напишем саму функцию numword() на странице script.js:
function numword(obj) {
var t=obj.textin.value;
var s=obj.slovo.value;
var m=s.length;
var res=0;
var i=0;
while (i < t.length-1)
{var ch=t.substr(i,m)
if (ch==s){
res+=1;
i=i+m
}
else
i++
}
obj.res.value=res
}
Посмотрим на результат, а затем разберем написанное:
Итак, посмотрим что же мы написали в нашей функции. Сначала мы определили две строковые переменные, одной является текст,
введенный пользователем, другой - слово.
var t=obj.textin.value;
var s=obj.slovo.value;
Затем мы определили длину искомого слова и обнулили переменную с результатом:
var m=s.length;
var res=0;
Далее с помощью цикла while, мы указали следующее: пока параметр цикла i меньше либо равен длине текста (один
вычитаем, т.к. нумерация символов начинается с нуля), брать подстроку, начиная с текущего символа i и длинной
равной длине искомого слова и сравнивать ее с самим искомым словом. Если результат истинен, то переменная res
увеличивается на единицу, а цикл продолжает свою работу с символа, который следует за найденным словом (i=i+m-1).
В противном случае - со следующего символа:
var i=0;
while (i<=t.length-1)
{var ch=t.substr(i,m)
if (ch==s){
res+=1;
i=i+m-1
}
else
i++
}
Наконец, мы отображаем результат:
obj.res.value=res
В языке javascript определен ряд стандартных функций работы со строками:
Number(s) - преобразует строковый параметр s в число.
String(n) - преобразует число n в строку.
isNaN(s) - проверяет является ли параметр s числом.
Если параметр s не является числом, то возвращает значение true (истина),
в противном случае - false (ложь).
Помните, когда в предыдущих уроках, мы брали числа, введенные пользователем, и умножали на 1. Таким образом, мы их из строки
переводили в число. Например:
var a1=1*obj.a1.value;
То же самое мы могли бы записать, используя стандартную функцию Number(s):
var a=obj.a1.value;
var a1=Number(a);
Существуют и другие стандартные функции, но вряд ли они вам пригодятся, поэтому рассматривать их здесь, мы не будем.
Собственно и урок, посвященный строкам, на этом можно считать законченным.