Метод Java indexOf

Метод indexOf в Java используется для поиска символа или строки в другой строке. Например, вы можете использовать его, чтобы посмотреть, есть ли символ @ в адресе электронной почты.

Давайте использовать этот пример в следующем коде.

Опять же, вы можете удалить или закомментировать код, который у вас уже есть.

Это новый код с использованием indexOf:

package prjstrings;

public class StringManipulation {

    public static void main(String[] args) {
        
        char ampersand = '@';       
        String email_address = "meme@me.com";
        
        int result;
        result = email_address.indexOf(ampersand);       
        
        System.out.println(result);
    }
    
}

Мы хотим проверить, присутствует ли знак @ в адресе электронной почты, поэтому сначала мы устанавливаем переменную char и присваиваем ей значение ‘@’. (Обратите внимание на одинарные кавычки для переменной char).

После настройки адреса электронной почты мы создаем переменную result. Это переменная типа int. Причина, по которой результатом является целое число, заключается в том, что метод indexOf вернет числовое значение. Он вернет номер позиции символа амперсанда в строке email_address. Вот соответствующая строка:

result = email_address.indexOf(ampersand);

После точки введите indexOf. В круглых скобках indexOf у вас есть несколько вариантов - ввести сам символ или имя переменной типа char. Мы поместили нашу переменную ampersand в круглые скобки indexOf. Затем Java сообщит нам положение символа @ в адресе электронной почты. Это сохранит значение в переменной result.

Когда вы запустите код, результат будет 4. IndexOf начинает считать с 0. То есть знак @ является пятым символом в адресе электронной почты.

Однако, если символа нет в слове, в котором вы ищете, indexOf вернет значение -1. Чтобы проверить это, удалите знак @ из строки email_address. Затем запустите код снова. Вы увидите -1 в окне вывода.

Вы можете использовать возвращаемое значение indexOf -1 в своих интересах. Вот снова тот же код, только без амперсанда и с оператором if, который проверяет значение переменной результата:

package prjstrings;

public class StringManipulation {

    public static void main(String[] args) {
        
        char ampersand = '@';      
        String email_address = "mememe.com";
        
        int result;
        result = email_address.indexOf(ampersand);        
        
        if (result == -1) {
            System.out.println("Неверный адрес электронной почты");
        }
        else {
            System.out.println("Адрес электронной почты правильный");
        }
                
    }
    
}

То есть, если результат indexOf равен -1, тогда мы можем вывести ошибку или разрешить пользователю продолжить.

Вы также можете использовать indexOf для проверки строки. Код ниже проверяет адрес электронной почты, чтобы увидеть, заканчивается ли он на .com:

package prjstrings;

public class StringManipulation {

    public static void main(String[] args) {
        
        String dotCom = ".com";
        String email_address = "meme@me.com";
        
        int result;      
        result = email_address.indexOf(dotCom);
        
        if (result == -1) {
            System.out.println("Неверный адрес электронной почты");
        }
        else {
            System.out.println("Адрес электронной почты правильный");
        }
                
    }
    
}

Код практически идентичен, за исключением того, что теперь мы используем переменную String для хранения текста, который мы хотим проверить (.com), а не переменную char.

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

Также вы можете указать начальную позицию для поисков. В нашем примере с адресом электронной почты мы можем начать поиск «.com» после символа @.

Этот код сначала находит позицию символа @, а затем использует ее в качестве начальной позиции для поиска «.com».

package prjstrings;

public class StringManipulation {

    public static void main(String[] args) {
        
        char ampersand = '@';
        String dotCom = ".com";
        String email_address = "meme@me.com";
        
        int atPos = email_address.indexOf(ampersand);
        int result = email_address.indexOf(dotCom, atPos);
        
        if (result == -1) {
            System.out.println("Неверный адрес электронной почты");
        }
        else {
            System.out.println("Адрес электронной почты правильный " + result);
        }
                
    }
    
}

Новая строка кода выглядит так:

result = email_address.indexOf(dotCom, atPos);

Единственное, что отличается, это добавление дополнительной переменной в скобках indexOf. У нас все еще есть строка, которую мы хотим найти (какой бы ни был текст в переменной dotСom), но теперь мы имеем еще и начальную позицию для поиска. Это значение переменной с именем atPos.

Мы получаем значение atPos, используя indexOf для определения положения символа @ в адресе электронной почты. Затем Java начинает поиск с этой позиции, а не с 0, как по умолчанию.

Методы endsWith и startsWith

Для вышеприведенной программы вы также можете использовать встроенный метод Java endsWith.

Boolean ending = email_address.endsWith(dotCom);

Вам необходимо установить булеву переменную для endsWith, так как метод возвращает ответ true или false. Строка, которую мы хотим найти, находится в круглых скобках endWith, а текст, в котором мы ищем, идет перед endWith.

Если текст находится в строке поиска, возвращается значение true, в противном случае будет false. Вы можете добавить оператор if ... else для проверки значения:

if (ending == false) {
    System.out.println("Неверный адрес электронной почты");
}
else {
    System.out.println("Адрес электронной почты правильный");
}

Метод startWith используется аналогичным образом:

Boolean startVal = email_address.startsWith(dotCom);

Опять же, возвращаемое значение - логическое значение true или false.

В следующем уроке вы узнаете, как использовать метод String с именем substring.

Дата обновления: 11.08.2019

  • Текущий 0.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

/Рейтинг: 0.0/5 (0 голос(ов) всего)

Добавить комментарий (без регистрации)