Как создать сайтУроки JavaScript → JavaScript работа со строками

JavaScript работа со строками

Мы уже не раз использовали строковые литералы, которые представляют собой последовательность символов, заключенную в одинарные или двойные кавычки. Все строки являются объектами типа 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-страницы будет следующим:
<html> <head> <title>javascript строки</title> <link rel="stylesheet" type="text/css" href="style.css"> <script type="text/javascript" src="script.js"></script> </head> <body> <form name="forma11"> Введите текст:<br> <textarea name="textin" rows="4" cols="20"></textarea><hr> Введите слово: <input type="text" size="10" name="slovo"><hr> <input type="button" value="Определить" onClick="numword(forma11);"> <input type="reset" value="Отменить"><hr> Количество слов в тексте: <input type="text" size="10" name="res"> </form> </body> </html>
Теперь напишем саму функцию 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);
Существуют и другие стандартные функции, но вряд ли они вам пригодятся, поэтому рассматривать их здесь, мы не будем. Собственно и урок, посвященный строкам, на этом можно считать законченным.



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