Для объекта String определены следующие функции извлечения подстроки из строки: slice(), substring()и substr().
Функции
slice(индекс1, индекс2),
и
substring(индекс1, индекс2)
действуют одинаково и возвращают новую строку, которая содержит подстроку исходной строки, начиная с индекса1 и заканчивая позицией в строке, на единицу меньшей, чем индекс2. Если индекс2 опущен, выделение производится до конца строки. Если индекс1 и/или индекс2 являются отрицательными, значения индекс1 и индекс2 получаются вычитанием заданных значений из длины строки.
Функция
substr(индекс, длина)
возвращает подстроку заданной длины, начиная с индекса. Если длина не задана или длина больше, чем заданная подстрока, возвращается подстрока, начиная с индекса до конца строки. Если длина нулевая или отрицательная, возвращается пустая строка.
Пример 4.4.50. Использование функций извлечения подстроки из строки объекта String:
1. // Ввод исходной строки
inputString = prompt("Введите исходную строку:","");
// Ввод граничной строки
rangeString = prompt("Введите граничную строку:","");
// Определение левой граничной строки
firstEntryIndex = inputString.indexOf(rangeString);
// Если левая граничная строка
// не найдена в исходной строке
if(firstEntryIndex == -1)
// Вывод сообщения
alert("Не найдена граница строки слева");
else
{
// Определение второго вхождения граничной строки
secondEntryIndex =
inputString.indexOf(rangeString,rangeString.length);
// Если правая граничная строка
// не найдена в исходной строке
if(secondEntryIndex == -1)
// Вывод сообщения
alert("Не найдена граница строки справа");
else
{
// Определение выводимой строки
outputString =
inputString.slice(firstEntryIndex +
rangeString.length, secondEntryIndex);
// Вывод строки
alert("Найдена строка '" + outputString + "'");
}
}
Этот фрагмент сценария определяет в исходной строке подстроку, ограниченную слева и справа заданной строкой.
Пример выполнения этого фрагмента приведен ниже:
2. // Ввод исходной строки
inputString = prompt("Введите исходную строку:","абракадабра");
// Бесконечный цикл
while(true)
{
// Ввод начального индекса выделяемой подстроки
beginIndexStr = prompt("Введите начальный индекс" +
"выделяемой подстроки:","");
// Преобразование индекса в число
beginIndex = Number(beginIndexStr);
// Если индекс - число
if(!isNaN(beginIndex)&& beginIndex >= 0)
// Выход из цикла
break;
// Вывод сообщения об ошибке
alert("Введен неверный начальный индекс: '" +
beginIndexStr + "'");
}
// Бесконечный цикл
while(true)
{
// Ввод длины выделяемой подстроки
substrLengthStr = prompt("Введите длину выделяемой" +
" подстроки: ","");
// Преобразование длины в число
substrLength = Number(substrLengthStr);
// Если индекс - число
if(!isNaN(substrLength) && substrLength > 0)
// Выход из цикла
break;
// Вывод сообщения об ошибке
alert("Введена неверная длина строки: '" +
substrLengthStr + "'");
}
// Определение выводимой подстроки заданной длины
outputSubstring =
inputString.substr(beginIndex, substrLength);
// Вывод результата
alert("Исходная строка: '" + inputString +
"'\nПодстрока: '" + outputSubstring + "'");
Этот фрагмент сценария определяет в исходной строке подстроку, начинающуюся с заданного индекса или заданной длины.
Пример выполнения этого фрагмента приведен ниже: