Функции анализа строки объекта String

Создание и свойство объекта String

Когда переменной присваивается строковый литерал, она становится, как указывалось выше, строковой перемен­ной. На самом деле JavaScript не поддерживает строковых типов, а создает объект типа String. Таким образом, любая строковая переменная или строковый литерал является объектом String, к которому могут быть применены свойство и функции этого объекта.

Используя ключевое слово new и конструктор String, можно явно создать строковый объект:

var имя-переменной = new String(значение);

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

Если переменной присваивается значения с помощью прямого вызова функции-конструктора:

var имя-переменной = String(значение);

то переменная будет просто строкой, а не строковым объектом, как в случае вызова функции-конструктора с ключевым словом new.

Строки в языке JavaScript, как и массивы, являются динамическими, т.е. в них можно вставлять, добавлять и удалять символы и подстроки. Индексация символов в строке начинается с нуля, т.е. первый символ в строке имеет индекс 0.

Объект String имеет единственное свойство length, хранящее текущую длину строки, содержащейся в строковом объекте.

Для объекта String определены следующие группы функций:

· функции анализа строки;

· функции извлечения подстроки из строки;

· функции изменения строки;

· функция преобразования строки в массив.

Для объекта String определены следующие функции анализа строк: charAt(), charCodeAt(), indexOf()и lastIndexOf().

Функция

charAt(индекс)

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

Функция

charCodeAt(индекс)

возвращает код Unicode символа, с заданной в индексе позицией в строке. Значение кода Unicode символа выводится в десятичной системе счисления. Значение параметра индекс должно быть в диапазоне от нуля до числа, на единицу меньшего текущей длины строки. Если параметр задан вне этого диапазона, возвращается значение NaN. Если параметр индекс не задан, предполагается, что его значение равно 0.

Функция

indexOf(строка, индекс)

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

Функция

lastIndexOf(строка, индекс)

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

Пример 4.4.49. Использование функций анализа строки объекта String:

1. // Ввод исходной строки

inputString = prompt("Введите исходную строку:","");

// Бесконечный цикл

while(true)

{

// Ввод символа

symbol = prompt("Введите символ:","");

// Если длина символа равна 1

if(symbol.length == 1)

// Выход из цикла

break;

// Вывод сообщения об ошибке

alert("Введен неверный символ: '" + symbol + "'");

}

// Цикл по символам строки

for(i = 0, symbolCount = 0; i < inputString.length; i++)

{

// Если текущий символ строки

// равен введенному символу

if(inputString.charAt(i) == symbol)

// Увеличение счетчика символов на 1

symbolCount++;

}

// Вывод результата

alert("Количество символов '" + symbol + "' в строке '"

+ inputString + "' равно " + symbolCount);

В этом фрагменте сценария определяется количество повторений заданного символа в исходной строке.

Пример выполнения этого фрагмента приведен ниже:

2. // Ввод исходной строки

inputString = prompt("Введите исходную строку:","");

// Бесконечный цикл

while(true)

{

// Ввод десятичного кода Unicode

code = prompt("Введите код Unicode символа:","");

// Если длина символа равна 4 и

// код - правильное число

if(code.length == 4 &&!isNaN(code))

// Выход из цикла

break;

// Вывод сообщения об ошибке

alert("Введен неверный код: '" + code + "'");

}

// Цикл по символам строки

for(i = 0, codeCount = 0; i < inputString.length; i++)

{

// Если текущий код символа строки

// равен введенному коду

if(inputString.charCodeAt(i) == code)

// Увеличение счетчика кодов символов на 1

codeCount++;

}

// Вывод результата

alert("Количество символов с кодом '" + code +

"' в строке '" + inputString + "' равно " +

codeCount);

В этом фрагменте сценария определяется количество повторений кода заданного символа в исходной строке.

Пример выполнения этого фрагмента (для десятичного значения кода Unicode буквы "б") приведен ниже:

3. // Ввод исходной строки

inputString = prompt("Введите исходную строку:","");

// Ввод строки поиска

searchString = prompt("Введите строку поиска:","");

// Задание начального индекса поиска в строке

beginSearchIndex = 0;

// Задание массива индексов строк

// поиска в исходной строке

searchStringIndex = new Array();

// Цикл поиска строки в исходной строке

do

{

// Определение индекса начала строки поиска

// в исходной строке

currentSearchIndex =

inputString.indexOf(searchString, beginSearchIndex);

// Если строка поиска найдена в исходной строке

if(currentSearchIndex!= -1)

{

// Добавление текущего индекса

// начала строки поиска в конец массива

searchStringIndex.push(currentSearchIndex);

// Задание нового начального индекса поиска

// строки в исходной строке

beginSearchIndex = currentSearchIndex +

searchString.length + 1;

}

}

while(currentSearchIndex!= -1)

// Если строка поиска найдена в исходной строке

if(searchStringIndex.length!=0)

// Вывод списка индексов вхождений

// строки поиска в исходной строке

indexList = "\nИндексы: " + searchStringIndex;

else

// Вывод пустой строки

indexList = "";

// Вывод результата

alert("Исходная строка: '" + inputString +

"'\nСтрока поиска: '" + searchString +

"'\nКоличество вхождений: " +

searchStringIndex.length + indexList);

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

Пример выполнения этого фрагмента приведен ниже:

4. // Ввод исходной строки

inputString = prompt("Введите исходную строку:","");

// Ввод строки поиска

searchString = prompt("Введите строку поиска:","");

// Определение индекса первого вхождения

// строки поиска в исходной строке

firstEntryIndex = inputString.indexOf(searchString);

// Если строки поиска нет

// в исходной строке

if(firstEntryIndex == -1)

// Вывод сообщения

alert("Строки поиска '" + searchString +

"' нет в исходной строке");

else

{

// Определение индекса последнего вхождения

// строки поиска в исходной строке

lastEntryIndex = inputString.lastIndexOf(searchString);

// Если индексы первого и последнего вхождений

// строки поиска в исходной строке равны

if(firstEntryIndex == lastEntryIndex)

// Вывод сообщения

alert("Строка '" + searchString +

"' встречается в исходной строке один раз");

else

// Вывод сообщения

alert("Строка '" + searchString + "' встречается" +

" в исходной строке более одного раза");

}

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

Пример выполнения этого фрагмента приведен ниже:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: