Как найти пробел в строке java
В языке Java принято отделять пробелами все математические знаки: +, -, =, ==, /, * с двух сторон.
int i = 2 + 3;
Исключение: унарный оператор ++ и —
i++; // НЕТ проблела между i и ++ int a = 3 + i++; // НЕТ проблела между i и ++
Так же мы ставим пробел после ключевых слов: if, while, do, for и перед круглой скобкой, которая идет после них
if (3 > 2) < >while (i < 10) < >do < >while (i
Внимание: не ставим пробел после названия метода и перед круглой скобкой!:
public static void main(String[] args) < // НЕТ проблела между main и ( System.out.println("hello"); // НЕТ пробела между println и ( >
public class Main
Как и в русском языке ставим пробелы после запятых, но не до:
void doSmth(10, 20, 40);
Найти второй пробел в строке с помощью регулярных выражений
При вводе сложных ФИО, например, Григорьев-Апполонов Пьер-Нарцисс Иванович оглы в в «Отчество» попадает только «оглы». Как найти второй пробел, а не последний? import java.util.Scanner; public class Main
public static void main(String[] args) < Scanner scanner = new Scanner(System.in); while (true) < String input = scanner.nextLine(); if (input.equals("0")) < break; >if (input.matches("([А-Я][а-я]+(-[А-Я][а-я]+)?\\s)[А-Я][а-я]+(\\s[а-я]+)?")) < int spaceIndex = input.indexOf(' '); int spaceIndex2 = input.lastIndexOf(' '); System.out.println("Фамилия: " + (input.substring(0, spaceIndex))); System.out.println("Имя: " + (input.substring(spaceIndex + 1, spaceIndex2))); System.out.println("Отчество: " + (input.substring(spaceIndex2 + 1))); break; >else < System.out.println("Вводимая строка не является ФИО"); break; >> >
Отслеживать
задан 18 апр 2021 в 15:34
47 6 6 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
int spaceIndex2 = input.indexOf(' ', spaceIndex + 1);
Отслеживать
ответ дан 18 апр 2021 в 16:25
25.9k 7 7 золотых знаков 31 31 серебряный знак 48 48 бронзовых знаков
Проверка строк на пустоту (Empty) и пробелы (Blank) в Java
В этом руководстве рассмотрим некоторые способы проверки строк на пустоту или пробелы в Java.
Empty или Blank
Довольно часто можно узнать, является ли строка Empty или Blank, но давайте убедимся, что мы правильно понимаем, о чем идет речь.
Мы считаем строку Empty, если она либо null, либо не имеет длины. Если строка состоит только из пробелов, то называем ее Blank.
Для Java пробелы – это такие символы, как пробелы, табуляция и т. д. Для примера посмотрите на Character.isWhitespace.
Пустые строки (Empty Strings)
Начиная с Java 6 и выше
Если мы хотя бы на Java 6, то самый простой способ проверить пустую строку – это String#isEmpty:
boolean isEmptyString(String string)
Чтобы проверить ее на null, нужно добавить дополнительную проверку:
boolean isEmptyString(String string)
Java 5 и ниже
String#isEmpty был представлен в Java 6. Для Java 5 и ниже можно вместо этого использовать String#length.
boolean isEmptyString(String string)
На самом деле String#isEmpty – это просто сокращение от String#length.
Blank Strings
И String#isEmpty, и String#length можно использовать для проверки наличия пробелов. Если хотим обнаружить пробелы, можно добиться этого с помощью String#trim. Он удалит все начальные и конечные пробелы перед выполнением проверки.
boolean isBlankString(String string)
Чтобы быть точным, String#trim удалит все начальные и конечные символы с кодом Unicode, меньшим или равным U+0020.
Помните, что строки неизменяемы, поэтому вызов функции trim не изменит базовую строку.
В дополнение к описанному выше подходу, начиная с Java 11, можно использовать метод isBlank() вместо trim():
boolean isBlankString(String string)
Метод isBlank() более эффективен, так как он не создает новую строку в куче. Поэтому, если мы используем Java 11 или выше, это предпочтительный подход.
Bean Validation
Еще один способ проверки пустых строк – регулярные выражения. Это удобно, например, при Java Bean Validation:
@Pattern(regexp = "\\A(?!\\s*\\Z).+") String someString;
Данное регулярное выражение гарантирует, что пустые строки или пробелы не будут проверяться.
Apache Commons
Если можно добавить зависимости, то можно использовать Apache Commons Lang. У него есть множество помощников для Java.
Если используем Maven, нужно добавить зависимость commons-lang3 в pom.xml:
org.apache.commons commons-lang3
Среди прочего, там есть StringUtils. Этот класс поставляется с такими методами, как isEmpty, isBlank и т. д.:
StringUtils.isBlank(string)
Этот вызов делает то же самое, что и метод isBlankString. Он проверяет на null и на наличие пробелов.
Guava
Еще одна известная библиотека, которая содержит определенные утилиты, связанные со строками, – это Google Guava. Начиная с версии 23.1 существует две разновидности Guava: android и jre. Вариант Android предназначен для Android и Java 7, тогда как вариант JRE предназначен для Java 8.
Если не нацелены на Android, можно просто добавить JRE в pom.xml:
com.google.guava guava 31.0.1-jre
Класс Guava Strings поставляется с методом Strings.isNullOrEmpty:
Strings.isNullOrEmpty(string)
Он проверяет, является ли данная строка null или пустой, но не проверяет строки, содержащие только пробелы.
Заключение
Есть несколько способов проверить, пуста строка или нет. Часто мы также хотим проверить, состоит ли строка только из пробельных символов.
Самый удобный способ – использовать Apache Commons Lang, который предоставляет такие помощники, как StringUtils.isBlank. Если хотим придерживаться простой Java, можно использовать комбинацию String#trim с String#isEmpty или String#length. Вместо этого для проверки бинов можно использовать регулярные выражения.
Обязательно ознакомьтесь со всеми этими примерами на GitHub.
Ищем символы в строке Java
В этой статье мы рассмотрим, как выполнять поиск букв и других символов в строке Java, а также как проверять, находится ли нужный символ, буква или слово в строке, начиная с указанного индекса.
Строкой в Java называют упорядоченную последовательность символов. Как правило строка в Java — это один из основных носителей текстовой информации.
Для работы со строками в Java применяют классы String, StringBuilder и StringBuffer. Класс String включает методы, возвращающие позицию символа либо подстроки в строке: — indexOf() — для поиска с начала строки; — lastIndexOf() — для выполнения поиска с конца строки.
Таким образом, если метод indexOf() найдёт заданную букву, символ либо строку, он вернёт индекс, то есть порядковый номер. Если не найдёт, будет возвращено -1. Также он позволяет искать символ или букву, начиная с указанного индекса.
Кроме того, стоит добавить, что класс String включает в себя ещё и метод contains, возвращающий true, когда в строке содержится заданная последовательность символов. Этот метод рекомендуется использовать лишь тогда, когда вам просто нужно узнать о существовании подстроки в строке, при этом позиция не имеет значения.
Метод indexOf()
Java.lang.Stringpublic int indexOf(char ch) public int indexOf(char ch, int fromIndex)public int indexOf(String s) public int indexOf(String s, int fromIndex)Соответственно, вызвать метод можно тоже несколькими способами:
int index = str1.indexOf(myChar); int index = str1.indexOf(myChar, start);int index = str1.indexOf(myString); int index = str1.indexOf(myString, start);Представьте, что нам нужно отыскать в строке индекс первого вхождения требуемого символа/буквы, а также нужного слова. Как уже было сказано выше, метод indexOf() вернёт нам индекс первого вхождения, а в случае неудачи — вернёт -1.
Посмотрите на следующий код:
public class Main < public static void main(String[] args) < String str = "Otus — онлайн-образование"; int indexM = str.indexOf("з"); // Ищем символ в строке int indexJava = str.indexOf("онлайн"); // Ищем слово в строке if(indexM == - 1) < System.out.println("Символ \"з\" не найден."); >else < System.out.println("Символ \"з\" найден, его индекс: " + indexM); >if(indexJava == - 1) < System.out.println("Слово \"онлайн\" не найдено."); >else < System.out.println("Слово \"онлайн\" найдено, его индекс: " + indexJava); >> >Результат получим следующий:
Символ "з" найден, его индекс: 18 Слово "онлайн" найдено, его индекс: 7Метод contains
Бывают ситуации, когда нам необходимо проверить, содержит ли наша строка конкретный символ/букву либо слово. Нижеследующий Java-код продемонстрирует и этот пример:
public class Main < public static void main(String[] args) < String str = "Otus — онлайн-образование"; System.out.println("Слово \"Otus\" есть в строке str? Ответ: " + str.contains("Otus")); System.out.println("Символ \"z\" присутствует в строке str? Ответ: " + str.contains("z")); >>В этом случае результат будет следующим:
Слово "Otus" есть в строке str? Ответ: true Символ "z" присутствует в строке str? Ответ: falseКак видите, выполнять поиск букв и других символов в строке Java совсем несложно, и наши элементарные примеры убедительно это подтверждают. Если же вы хотите получить более продвинутые навыки по Java-разработке, добро пожаловать на наш курс:
