Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие по Java Script 1.doc
Скачиваний:
131
Добавлен:
12.02.2015
Размер:
1.44 Mб
Скачать

Объект String (Строка)

Объект String представляет интерес главным образом благодаря методам обработки строк. Он незаменим, когда требуется, например, найти позицию вхождения одной строки в другую, вырезать из строки некоторую ее часть, разбить строку на отдельные элементы и создать из них массив и т.д.

С помощью объекта String можно создать строку как строковый объект. Однако в подавляющем большинстве случаев для этого достаточно использовать обычную переменную и оператор присвоения строкового значения. В этом случае интерпретатор все равно создает экземпляр (копию) строкового объекта, свойства и методы которого доступны из программного кода.

Для создания строкового объекта используется выражение следующего вида:

имя_переменной = new String("строковое_значение")

Здесь имя_переменной выполняет роль ссылки на строковый объект. Например, выражение mystring = new String ("Привет!") создает строковый объект mystring со значением "Привет!".

Однако можно создать строковый объект и с помощью обычного оператора присвоения:

имя_переменной = "строковое_значение"

или var имя_переменной = "строковое_значение"

Доступ к свойствам и методам строкового объекта обеспечивается такими выражениями:

строка.свойство

String.свойство

строка.метод([параметры])

String.метод([параметры])

Некоторые методы могут и не иметь параметров, что указано с помощью квадратных скобок. Здесь строка может быть ссылкой на строковый объект, строковой переменной, выражением, возвращающим строку, а также просто строковым значением.

Когда используется ключевое слово String в качестве имени объекта, это означает, что нас интересуют свойства и методы статического строкового объекта, то есть общие свойства и методы, не связанные, вообще говоря, с конкретными свойствами и методами конкретного строкового объекта (экземпляра объекта String).

Ниже приведены три различных способа использования свойства length строкового объекта, значением которого является длина строки (количество символов в строке).

mystring = "Однажды в студеную зимнюю пору"

mystring.length // значение равно 30

"Однажды в студеную зимнюю пору".length // значение равно 30

function fstring() {return "abcde"} /* функция, возвращающая

строку "abcde" */

fstring().length //значение равно 5

Свойство String.length – это доступное только для чтения целое число, указывающее количество символов в заданной строке (включая пробелы). Для любой строки s индекс последнего символа равен s.length–1. Свойство length строки не перечисляется циклом for/in и не может быть удалено с помощью оператора delete.

Пример

"Иван".length // значение равно 4

"Привет\nвсем".length /* значение равно 11

(\n - один символ перевода строки) */

х = "" // пустая строка

х.length // значение равно 0 (пустая строка имеет длину 0)

Методы String обработки строк

  • charAt(индекс) — возвращает символ, занимающий в строке указанную позицию. Номер первого символа в строке равен нулю. Если n не находится между 0 и string.length–1, этот метод возвращает пустую строку. Обратите внимание: в JavaScript нет символьного типа данных, отличного от строкового, поэтому извлеченный символ представляет собой строку длиной 1.

Синтаксис: строка. charAt (индекс)

Возвращает односимвольную или пустую строку.

Параметр (индекс) является числом, индекс первого символа равен 0.

Примеры

"Привет".charAt(2) // значение равно "и"

"Привет".charAt(15) // значение равно ""

mystring = "Привет"

mystring.charAt(mystring.length-1) /* значение последнего символа равно "т" */

  • charCodeAt([индекс]) — преобразует символ в указанной позиции строки в его числовой эквивалент (код).

Возвращаемое значение: код Unicode указанного символа в строке – 16-разрядное целое между 0 и 65 535.

Метод charCodeAt() аналогичен charAt(), за исключением того, что возвращает код символа, находящегося в определенной позиции, а не подстроку, содержащую сам символ. Если индекс отрицателео либо меньше или равно длине строки, charCodeAt() возвращает NaN.

Синтаксис: строка.charCodeAt(индекс)

Примеры

"abc" . charCodeAt() // значение равно 97

"abc" . charCodeAt(l) // значение равно 98

"abc" . charCodeAt(25) // значение равно NaN

"" . charCodeAt(25) // значение равно NaN

" я " . charCodeAt(0) // значение равно 1103

  • String.fromCharCode(номер1 [, номер2 [, ... номерN]]) — возвращает строку символов, числовые коды Unicode которой указаны в качестве параметров.

Синтаксис: String.fromCharCode(номер1 [, номер2 [, ... номерN]])

Возвращает строку.

Пример:

String.fromCharCode(97,98,1102) // значение равно "аbю"

var s = String.fromCharCode(104, 101, 108, 108, 111); // Создает строку "hello"

  • concat(строка) — конкатенация (склейка) строк.

Синтаксис: строка1. concat (строка2)

Возвращает строку. concat() преобразует все свои аргументы в строки (если это нужно) и добавляет их по порядку в конец строки. Возвращает полученную объединенную строку. Обратите внимание: сама строка при этом не меняется.

Метод String.concat() представляет собой аналог Array.concat(). Следует отметить, что конкатенацию строк часто проще выполнить с помощью оператора +.

Примеры:

"Иван".concat("Иванов") // значение равно "ИванИванов"

х = "Федор" + " " // значение х равно "Федор "

х.concat("Иванов") // значение равно "Федор Иванов"

  • String.indexOf(строка_пoиска [, индекс]) — производит поиск строки, указанной параметром, и возвращает индекс ее первого вхождения.

Синтаксис: строка. indexOf (строка_поиска [, индекс])

Возвращает число.

Метод производит поиск позиции первого вхождения строка_поиска в строку строка. Возвращаемое число (индекс вхождения) отсчитывается от 0. Если поиск не удачен, то возвращается -1. Поиск в пустой строке всегда возвращает -1. Поиск пустой строки всегда возвращает 0.

Второй параметр, не являющийся обязательным, указывает индекс, с которого следует начать поиск. Его допустимые значения от 0 (позиция первого символа в строке) до string.length–1 (позиция последнего символа в строке). Если этот аргумент отсутствует, поиск начинается с первого символа строки.

Этот метод хорошо использовать вместе с методом выделения подстроки substr(), когда требуется сначала определить позиции начала и конца выделяемой подстроки. Рассматриваемый здесь метод подходит для определения начальной позиции.

Примеры:

х ="Во первых строках своего письма"

х.indexOf("первых") //значение равно 3

х.indexOf("первых строках") //значение равно 3

х.indexOf("вторых строках") //значение равно -1

х.indexOf("В") //значение равно 0

х.indexOf ( "в" ) //значение равно 6

х.indexOf("в" , 7) //значение равно 19

x.indexOf(" ") //значение равно 2

х.indexOf(" ", 5) //значение равно 9

х.indexOf( "" ) //значение равно 0

  • String.lastIndexOf(строка_пoиска [, индекс]) — производит поиск строки, указанной параметром, и возвращает индекс ее первого вхождения; при этом поиск начинается с конца исходной строки, но возвращаемый индекс отсчитывается от ее начала, то есть от 0.

Синтаксис: строка.lastIndexOf(строка_пoиска [, индекс])

Возвращает число. Метод аналогичен рассмотренному выше indexOf() и отличается лишь направлением поиска.

Примеры

х ="Во первых строках своего письма"

х.lastlndexOf("первых") // значение равно 3

x.lastlndexOf("а") // значение равно 30

х.indexOf("a") // значение равно 15

  • String.localeCompare()

сравнивает строки с учетом порядка следования символов национальных алфавитов.

Синтаксис:

строка.localeCompare(целевая_строка)

Аргумент целевая_строка - строка, сравниваемая со строкой с учетом порядка следования символов национальных алфавитов.

Возвращаемое значение - число, обозначающее результат сравнения. Если строка «меньше» целевой_строки, localeCompare() возвращает отрицательное число. Если строка «больше» целевой_строки, метод возвращает положительное число. Если строки идентичны или неразличимы в соответствии с региональными соглашениями о сортировке, метод возвращает 0.

Пример:

Отсортировать массив строк в порядке, учитывающем региональные параметры, можно следующим образом:

var strings; // Сортируемый массив строк; инициализируется в другом месте

strings.sort(function(a,b) { return a.localeCompare(b) });

  • String.slice(start, end) - извлечение подстроки.

Синтаксис: строка.slice(индекс1[,индекс2]) — возвращает подстроку исходной строки, начальный и конечный индексы которой указываются параметрами, за исключением последнего символа. Данный метод не изменяет исходную строку.

Если второй параметр не указан, то возвращается подстрока с начальной позицией индекс1 и до конца строки. Отсчет позиций начинается с начала строки. Первый символ строки имеет индекс 0. Если второй параметр указан, то возвращается подстрока исходной строки начиная с позиции индекс1 и до позиции индекс2, исключая последний символ. Если второй параметр отрицателен, то отсчет конечного индекса производится от конца строки.

Методы slice(), substring() и признанный устаревшим метод substr() объекта String возвращают части строки. Метод slice() более гибок, чем substring(), поскольку допускает отрицательные значения аргументов. Метод slice() отличается от substr() тем, что задает строку с помощью двух символьных позиций, а substr() использует одно значение позиции и длину. Кроме того, String.slice() является аналогом Array.slice().

Примеры:

var s = "abcdefg";

s.slice(0,4) // Возвращает "abcd"

s.slice(2,4) // Возвращает "cd"

s.slice(4) // Возвращает "efg"

s.slice(3,-1) // Возвращает "def"

s.slice(3,-2) // Возвращает "de"

s.slice(-3,-1) // Возвращает "ef"

х = "Во первых строках своего письма"

х.slice(3,8) // значение равно "первы"

х.slice(3,-2) // значение равно "первых строках своего пись"

/* Анализ адреса электронной почты */

х = "mumu@gerasim.ru"

i = х.indexOf("@") // значение равно 4

_name = x.slice(0, i) // значение равно "mumu"

_domen = x.slice(i+1, х.indexOf"." ) ) // значение равно "gerasim"

_domen = х.slice(i+1, -3) // значение равно "gerasim"

  • String.split() разбивает строку на массив строк

Синтаксис: строка.split([разделитель], [лимит])

Первый параметр – разделитель - является строкой символов, используемой в качестве разделителя строки на элементы. Второй необязательный параметр — лимит - необязательное целое, задающее максимальную длину полученного массива. Если этот аргумент указан, то количество возвращенных подстрок не будет превышать указанное. Если он не указан, разбивается вся строка независимо от ее длины.

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

Если разделитель — пустая строка, то возвращается массив символов строки. Если разделитель не указан, строка вообще не разбивается, и возвращаемый массив содержит только один строковый элемент, представляющий собой строку целиком.

Метод String.split() – обратный методу Array.join().

Примеры:

Метод split() наиболее полезен при работе с сильно структурированными строками:

"1:2:3:4:5".split(":"); // Возвращает ["1","2","3","4","5"]

"|a|b|c|".split("|"); // Возвращает ["", "a", "b", "c", ""]

Еще одно распространенное применение метода split() состоит в разбиении команд и других подобных строк на слова, разделенные пробелами:

var words = sentence.split(' ');

х = "Привет всем"