Главная » Java » Создание производных строк

0

Некоторые из методов класса String возвращают новые строки, которые отчасти напоминают исходные, но подвергшиеся определенным модификациям. Напоминаем, что новые строки должны возвращаться из-за того, что объекты String доступны только для чтения. Например, для извлечения из строки фрагмента, ограниченного заданными символами, может применяться следующий метод:

public static String quotedString( String from, char start, char end)

{

int startPos = from.indexOf(start);

int endPos = from.lastIndexOf(end);

if (startPos == -1)     // начальный символ не найден

return null;

else if (endPos == -1)  // конечный символ не найден

return from.substring(startPos);

else                    // найдены оба символа-ограничителя

return from.substring(startPos, endPos + 1);

}

Метод quotedString возвращает новый объект String, который содержит фрагмент строки from, начинающийся с символа start и заканчивающийся  символом end. Если найден символ start, но не найден end, то метод возвращает новый объект String, содержащий все символы от начальной позиции до конца строки. В работе quotedString используются две перегруженные формы метода substring. Первая из них получает только начальную позицию в строке и возвращает новую строку, содержащую все символы с заданной позиции, и до конца строки. Вторая форма получает и начальную, и конечную позиции и

возвращает новую строку, содержащую все символы между соответствующими  позициями исходной строки; при этом начальный символ-ограничитель включается в подстроку, а конечный — нет. Именно из-за этого принципа “до конца, но не включая конец” мы и прибавляем единицу к endPos, чтобы в подстроку вошли оба символа-ограничителя. Например, вызов

quotedString(“Il a dit “Bonjour!””, ‘“’, ‘”’);

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

“Bonjour!”

Ниже перечисляются остальные методы для создания производных строк:

public String replace(char oldChar, char newChar)

Возвращает новый объект String, в котором все вхождения символа old Char заменяются символом newChar.

public String toLowerCase()

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

public String toUpperCase()

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

public String trim()

Возвращает новый объект String, в котором удалены все пробелы в начале и конце строки.

Метод concat возвращает новую строку, которая эквивалентна применению оператора + к двум строкам. Следующие два оператора являются эквивалентными:

newStr = oldStr.concat(“ (not)”); newStr = oldStr + “ (not)”; Упражнение 8.3

Как показано выше, метод quotedString предполагает, что в исходной строке имеется всего один экземпляр подстроки с заданными символами- ограничителями. Напишите версию метода, которая извлекает все такие строки и возвращает массив.

Источник: Арнольд К., Гослинг Д. – Язык программирования Java (1997)

По теме:

  • Комментарии