Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обработка строк (фрагмент) сокр.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
188 Кб
Скачать
☆

Поиск строк

Класс string предоставляет два метода, которые позволяют выполнять поиск указанного символа или подстроки внутри строки:

indexOf(). Поиск первого вхождения символа или подстроки.

lastindexOf(). Поиск последнего вхождения символа или подстроки.

Эти два метода имеют несколько различных перегруженных вариантов. Во всех случаях методы возвращают индекс того элемента строки, в котором символ или подстрока были найдены. При неудачном поиске возвращается — 1. Для поиска первого вхождения символа используйте

int indexOf(int ch)

Для поиска последнего вхождения символа используйте

int lastlndexOf(int ch)

Здесь ch — разыскиваемый символ.

Для поиска первого или последнего вхождения подстроки используйте

int indexOf(String str) int lastlndexOf(String str)

Здесь str определяет подстроку.

Можно определить начальную точку поиска, применяя следующие формы:

int indexOf(int ch, int startIndex) int lastIndexOf(int ch, int startlndex)

int indexOf(String str, int startIndex)

int lastIndexOf (String str, int startIndex)

Здесь startlndex указывает индекс (номер) символа, с которого начинается

ПОИСК. ДЛЯ indexOf () ПОИСК ВЫПОЛНЯетСЯ ОТ СИМВОЛа С ИНДеКСОМ startlndex

до конца строки. Для lastlndexOfо поиск выполняется от символа с индексом startlndex НО нуля.

Следующий пример показывает, как можно использовать различные индексные методы для поиска внутри strings-объекта:

// Демонстрирует indexOf() к lastIndexOf().

class indexOfDemo {

public static void main(String args[]) {

String s = "Now is the time for all good men " +

"to come to the aid of their country.";

System.out.println(s);

System.out.println("indexOf(t) = " + s.indexOf('t'));

System.out.println("lastlndexOf(t) = " + s.lastIndexOf('t'));

System.out.println("indexOf(the) = " + s.indexOf("the"));

System.out.println("lastlndexOf(the) = " + s.lastIndexOf("the"));

System.out.println("indexOf(t, 10) = " + s.indexOf('t', 10));

System.out.println("lastlndexOf(t, 60) = " + s.lastIndexOf('t', 60));

System.out.println("indexOf(the, 10) = " + s.indexOf("the", 10));

System.out.println("lastlndexOf(the, 60) = " + s.lastIndexOf("the", 60));

}

}

Вывод этой программы:

Now is the time for all good men to come to the aid of their country.

indexOf(t) = 7

lastlndexOf(t) = 65

indexOf(the) = 7

lastlndexOf(the) = 55

indexOf(t, 10) =11

lastlndexOf(t, 60) =55

indexOf(the, 10) =44

lastlndexOf (the, 60) =55

Изменение строки

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

Метод substring()

Вы можете извлечь подстроку с помощью метода substring(). Он имеет две формы. Первая:

String substring(int startlndex)

Здесь startIndex специфицирует индекс символа, с которого начнется подстрока. Эта форма возвращает копию подстроки, которая начинается с номера startIndex и простирается до конца строки вызова.

Вторая форма substring() позволяет указывать как начальный, так и конечный индексы подстроки:

String substring(int startlndex, int endlndex)

Здесь startlndex указывает начальный индекс; endindex определяет индекс последнего символа подстроки. Возвращаемая строка содержит все символы от начального до конечного индекса (но не включая символ с конечным индексом).

Следующая программа использует метод substring() для замены всех экземпляров одной подстроки на другую строку:

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

class StringReplace {

public static void main(String args[]) {

String org = "This is a test. This is, too.";

String search = "is";

String sub = "was";

String result = "";

int i ;

do { // заменить все совпавшие подстроки

System.out.println(org) ;

i = org.indexOf(search) ;

if(i != -1) {

result = org.substring(0, i);

result = result + sub;

result = result + org.substring(i + search.length());

org = result;

}

}

while(i != -1) ;

}

}

Вывод этой программы:

This is a test. This is, too.

Thwas is a test. This is, too.

Thwas was a test. This is, too.

Thwas was a test. Thwas is, too.

Thwas was a test. Thwas was, too.

Метод concat()

Можно сцеплять две строки, используя метод concat() , с такой сигнатурой:

String concat(String str)

Данный метод создает новый объект, включающий строку вызова с содержимым объекта str, добавленным в конец этой строки, concat () выполняет ту же функцию, что и операция конкатенации +. Например, фрагмент

String s1 = "one";

String s2 = s1.concat("two");

Помещает строку "onetwo" в s2. Он генерирует тот же результат, что следующая последовательность:

String s1 = "one";

String s2 = s1 + "two";

Метод replaced()

Метод replace() заменяет все вхождения одного символа в строке вызова другим символом. Он имеет следующую общую форму:

String replace(char original, char replacement)

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

String s = "Hello".replace ('l', 'w');

помешает в s строку "Hewwo".

Метод trim()

Метод trim() возвращает копию строки вызова, из которой удалены любые ведущие и завершающие пробелы. Он имеет следующую общую форму:

String trim()

Пример:

String s = " Hello World ".trim();

Этот оператор помещает в строку s "Hello World".

Метод trim() весьма полезен, когда вы обрабатываете команды пользователя. Например, следующая программа запрашивает у пользователя название штата и затем отображает столицу этого штата. Она использует trim() для удаления любых ведущих и завершающих пробелов, которые, возможно, по неосторожности были введены пользователем.

// Использование trim() для обработки команд.

import java.io.*;

class UseTrim {

public static void main(String args [ ])

throws IOException {

// создать BufferedReader, использующий System.in

BufferedReader br = new

BufferedReader(new InputStreamReader(System.in));

String str;

System.out.println("Enter 'stop' to quit.");

System.out.println("Enter State: ");

do {

str = br.readLine();

str = str.trim(); // удалить пробелы

if(str.equals("Illinois"))

System.out.println("Capital is Springfield."); else if(str.equals("Missouri"))

System.out.println("Capital is Jefferson City."); else if(str.equals("California"))

System.out.println("Capital is Sacramento."); else if(str.equals("Washington"))

System.out.println("Capital is Olympia.");

// ...

} while(!str.equals("stop"));

}

}

Изменение регистра символов в строке

Метод toLowerCase () преобразует вер символы в строке с верхнего регистра на нижний. Метод toUpperCase() преобразует все символы в строке с нижнего регистра на верхний. Неалфавитные символы, типа цифр, остаются незатронутыми. Общие формы этих методов:

String toLowerCase()

String toUpperCase()

Оба метода возвращают объект типа string, который содержит верхне- или нижнерегистровый эквивалент вызывающего string-объекта.

Пример, который использует toLowerCase() И toUpperCase ():

// Демонстрирует toUpperCase() и toLowerCase().

class ChangeCase {

public static void main(String args [ ]) {

String s = "Это тест.";

System.out.println("Оригинал: " + s);

String upper = s.toUpperCase();

String lower = s.toLowerCase();

System.out.println("Uppercase: " + upper);

System.out.println("Lowercase: " + lower);

}

}

Вывод, выполненный этой программой:

Оригинал: Это тест.

Uppercase: ЭТО ТЕСТ.

Lowercase: это тест.

13