Spec-Zone .ru
спецификации, руководства, описания, API
След: Изучение Языка Java
Урок: Числа и Строки
Раздел: Строки
Управление Символами в Строке
Домашняя страница > Изучение Языка Java > Числа и Строки

Управление Символами в Строке

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

Получение Символов и Подстрок Индексирует

Можно добраться, символ в детали индексируют в пределах строки, вызывая charAt() метод средства доступа. Индексирование первого символа 0, в то время как индексирование последнего знака length()-1. Например, следующий код добирается, символ в индексируют 9 в строке:

String anotherPalindrome = "Niagara. O roar again!"; 
char aChar = anotherPalindrome.charAt(9);

Индексы начинаются в 0, таким образом, символ в индексирует 9, 'O', как иллюстрировано в следующем числе:

Используйте charAt метод, чтобы добраться, символ в детали индексируют.

Если Вы хотите получить больше чем один последовательный символ от строки, можно использовать substring метод. substring у метода есть две версии, как показано в следующей таблице:

substring Методы в String Класс
Метод Описание
String substring(int beginIndex, int endIndex) Возвращает новую строку, которая является подстрокой этой строки. Первый целочисленный параметр определяет индексирование первого символа. Вторым целочисленным параметром является индексирование последнего знака - 1.
String substring(int beginIndex) Возвращает новую строку, которая является подстрокой этой строки. Целочисленный параметр определяет индексирование первого символа. Здесь, возвращенная подстрока расширяется до конца исходной строки.

Следующий код получает от Ниагарского палиндрома подстроку, которая расширяется от, индексируют 11 до, но не включая, индексируют 15, который является словом "рев":

String anotherPalindrome = "Niagara. O roar again!"; 
String roar = anotherPalindrome.substring(11, 15); 
Используйте метод подстроки, чтобы получить часть строки.

Другие Методы для Управления Строками

Вот несколько другие String методы для того, чтобы управлять строками:

Другие Методы в String Класс для Управления Строками
Метод Описание
String[] split(String regex)
String[] split(String regex, int limit)
Поиски соответствия как определено строковым параметром (который содержит регулярное выражение) и разделяют эту строку на массив строк соответственно. Дополнительный целочисленный параметр определяет максимальный размер возвращенного массива. Регулярные выражения покрываются уроком, названным "Регулярные выражения."
CharSequence subSequence(int beginIndex, int endIndex) Возвращает новую символьную последовательность, созданную из beginIndex индексируйте вплоть до endIndex - 1.
String trim() Возвращает копию этой строки с продвижением и запаздывающим удаленным пробелом.
String toLowerCase()
String toUpperCase()
Возвращает копию этой строки, преобразованной в строчный или верхний регистр. Если никакие преобразования не необходимы, эти методы возвращают исходную строку.

Поиск Символов и Подстрок в Строке

Вот некоторый другой String методы для того, чтобы найти символы или подстроки в пределах строки. String class обеспечивает методы средства доступа, которые возвращают позицию в пределах строки определенного символа или подстроки: indexOf() и lastIndexOf(). indexOf() методы ищут вперед от начала строки, и lastIndexOf() методы ищут назад от конца строки. Если символ или подстрока не находятся, indexOf() и lastIndexOf() возвратитесь-1.

String class также обеспечивает метод поиска, contains, это возвращает true, если строка содержит определенную символьную последовательность. Используйте этот метод, когда Вы только должны знать, что строка содержит символьную последовательность, но точное расположение не важно.

Следующая таблица описывает различные методы поиска строки.

Методы Поиска в String Класс
Метод Описание
int indexOf(int ch)
int lastIndexOf(int ch)
Возвращает индексирование первого (последнего) возникновения указанного символа.
int indexOf(int ch, int fromIndex)
int lastIndexOf(int ch, int fromIndex)
Возвращает индексирование первого (последнего) возникновения указанного символа, ища вперед (назад) от указанного индексирует.
int indexOf(String str)
int lastIndexOf(String str)
Возвращает индексирование первого (последнего) возникновения указанной подстроки.
int indexOf(String str, int fromIndex)
int lastIndexOf(String str, int fromIndex)
Возвращает индексирование первого (последнего) возникновения указанной подстроки, ища вперед (назад) от указанного индексирует.
boolean contains(CharSequence s) Возвращает true, если строка содержит указанную символьную последовательность.

Отметьте: CharSequence интерфейс, который реализуется String class. Поэтому, можно использовать строку в качестве параметра за contains() метод.

Замена Символов и Подстрок в Строку

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

String У class действительно есть четыре метода для того, чтобы заменить найденный символами или подстроками, как бы то ни было. Они:

Методы в String Класс для Управления Строками
Метод Описание
String replace(char oldChar, char newChar) Возвращает новую строку, следующую из замены всех возникновений oldChar в этой строке с newChar.
String replace(CharSequence target, CharSequence replacement) Замены каждая подстрока этой строки, которая соответствует литеральную целевую последовательность с указанной литеральной заменяющей последовательностью.
String replaceAll(String regex, String replacement) Замены каждая подстрока этой строки, которая соответствует данное регулярное выражение с данной заменой.
String replaceFirst(String regex, String replacement) Заменяет первую подстроку этой строки, которая соответствует данное регулярное выражение с данной заменой.

Пример

Следующий class, Filename, иллюстрирует использование lastIndexOf() и substring() изолировать различные части имени файла.


Отметьте: методы в следующем Filename class не делает никакой проверки на ошибки и предполагает, что их параметр содержит полный путь к каталогу и имя файла с расширением. Если бы эти методы были производственным кодом, то они проверили бы, что их параметры были должным образом созданы.

public class Filename {
    private String fullPath;
    private char pathSeparator, 
                 extensionSeparator;

    public Filename(String str, char sep, char ext) {
        fullPath = str;
        pathSeparator = sep;
        extensionSeparator = ext;
    }

    public String extension() {
        int dot = fullPath.lastIndexOf(extensionSeparator);
        return fullPath.substring(dot + 1);
    }

    // gets filename without extension
    public String filename() {
        int dot = fullPath.lastIndexOf(extensionSeparator);
        int sep = fullPath.lastIndexOf(pathSeparator);
        return fullPath.substring(sep + 1, dot);
    }

    public String path() {
        int sep = fullPath.lastIndexOf(pathSeparator);
        return fullPath.substring(0, sep);
    }
}

Вот программа, FilenameDemo, это создает a Filename объект и вызовы все его методы:


public class FilenameDemo {
    public static void main(String[] args) {
        final String FPATH = "/home/user/index.html";
        Filename myHomePage = new Filename(FPATH, '/', '.');
        System.out.println("Extension = " + myHomePage.extension());
        System.out.println("Filename = " + myHomePage.filename());
        System.out.println("Path = " + myHomePage.path());
    }
}

И вот вывод из программы:

Extension = html
Filename = index
Path = /home/user

Как показано в следующем числе, нашем extension использование метода lastIndexOf определять местоположение последнего вхождения периода (.) в имени файла. Затем substring использует возвращаемое значение lastIndexOf извлечь расширение файла — то есть, подстрока с периода до конца строки. Этот код предполагает, что у имени файла есть период в нем; если у имени файла нет периода, lastIndexOf возвраты-1, и метод подстроки бросают a StringIndexOutOfBoundsException.

Использование lastIndexOf и подстроки в методе расширения в Имени файла class.

Кроме того, заметьте что extension использование метода dot + 1 как параметр substring. Если символ точки(.) является последним знаком строки, dot + 1 равно длине строки, которая является одним большим, чем самые большие индексируют в строку (потому что индексы запускаются в 0). Это - юридический параметр substring потому что тот метод принимает индексирование равного, но не больше чем, длина строки и интерпретирует это, чтобы означать "конец строки."


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Преобразование Между Числами и Строками
Следующая страница: Сравнение Строк и Частей Строк