3.7. Java примеры – Разбиение строки на слова и символы в массив и по разделителю
Следующий пример показывает как разделить строку в Java по разделителю с помощью метода split() и вывести подстроку.
public class Example < public static void main(String args[]) < System.out.println("Пример 1:"); String str = "разделить-строку-по-разделителю"; String[] subStr; String delimeter = "-"; // Разделитель subStr = str.split(delimeter); // Разделения строки str с помощью метода split() // Вывод результата на экран for(int i = 0; i < subStr.length; i++) < System.out.println(subStr[i]); >// Ещё один пример разделения System.out.println("\nПример 2:"); str = "разделить.строку.по разделителю"; delimeter = "\\."; // Разделитель subStr = str.split(delimeter); // Вывод результата на экран for(int i = 0; i < subStr.length; i++) < System.out.println(subStr[i]); >// Ещё один пример разделения с использованием порога System.out.println("\nПример 3:"); str = "разделить!строку!по!разделителю"; delimeter = "!"; // Разделитель subStr = str.split(delimeter, 3); // Разбить строку str с порогом равным 3, который означает, как много подстрок, должно быть возвращено. // Вывод результата на экран for(int i = 0; i < subStr.length; i++) < System.out.println(subStr[i]); >> >
Результат
Получим следующий результат:
Пример 1: разделить строку по разделителю Пример 2: разделить строку по разделителю Пример 3: разделить строку по!разделителю
Решение 2: разбить строку на слова
Ниже продемонстрирован пример, который позволяет в Java разбить строку на слова.
public class Example < public static void main(String args[]) < String str = "разбить строку на слова"; String[] words = str.split("\\s"); // Разбиение строки на слова с помощью разграничителя (пробел) // Вывод на экран for(String subStr:words) < System.out.println(subStr); >> >
Результат
Получим следующий результат:
разбить строку на слова
Решение 3: разбить строку на символы в массив
Следующий пример показывает как разбить строку на массив по символу. Для этого просто преобразуем строку в массив с помощью метода toCharArray().
public class Example < public static void main(String args[]) < String str = "ProgLang"; char[] strToArray = str.toCharArray(); // Преобразуем строку str в массив символов (char) // Вывод массива на экран for(int i = 0; i < strToArray.length; i++) < System.out.print(strToArray[i] + " "); // Для наглядности вставим пробел между индексами >> >
Результат
Получим следующий результат:
P r o g L a n g
Оглавление
- 1. Java примеры – Использование кода на практике
- 2. Java примеры – Окружающая среда
- 2.1. Java примеры – Скомпилировать файл
- 2.2. Java примеры – Установить путь к нескольким классам
- 2.3. Java примеры – Отладка java-файла
- 2.4. Java примеры – Установить путь к классу
- 2.5. Java примеры – Просмотреть текущий путь класса
- 2.6. Java примеры – Установить назначение файла класса
- 2.7. Java примеры – Запустить скомпилированный java-файл класса
- 2.8. Java примеры – Узнать версию Java
- 2.9. Java примеры – Установить путь к классу в .jar-файле или .zip-файле
- 3. Java примеры – Строки
- 3.1. Java примеры – Сравнить две строки
- 3.2. Java примеры – Найти последнее вхождение подстроки внутри подстроки
- 3.3. Java примеры – Удалить нужный символ из строки
- 3.4. Java примеры – Заменить символ в строке
- 3.5. Java примеры – Вывод в обратном порядке
- 3.6. Java примеры – Нахождение символа или слова в строке
- 3.7. Java примеры – Разбиение строки на слова и символы
- 3.8. Java примеры – Преобразование строки в верхний регистр
- 3.9. Java примеры – Найти слово в строке
- 3.10. Java примеры – Сравнить производительность создания строки
- 3.11. Java примеры – Оптимизировать создание строк
- 3.12. Java примеры – Форматирование строк
- 3.13. Java примеры – Конкатенация строк
- 3.14. Java примеры – Определить код Юникода символа в строке
- 3.15. Java примеры – Буферизация строк
- 4. Java примеры – Массивы
- 4.1. Java примеры – Сортировка массива и поиск элемента
- 4.2. Java примеры – Метод сортировки массива, вставить элемент в массив
- 4.3. Java примеры – Размер двумерного массива
- 4.4. Java примеры – Обратный порядок массива, переворачиваем массив
- 4.5. Java примеры – Как выводить массивы и двумерные массивы в консоль
- 4.6. Java примеры – Найти максимальный и минимальный элемент массива
- 4.7. Java примеры – Соединить два массива в один
- 4.8. Java примеры – Как заполнить массив числами
- 4.9. Java примеры – Увеличить массив после инициализации
- 4.10. Java примеры – Сравнение двух массивов
- 4.11. Java примеры – Удаление элемента из массива
- 4.12. Java примеры – Удаление массива из другого массива
- 4.13. Java примеры – Одинаковые элементы массивов
- 4.14. Java примеры – Поиск в массиве
- 4.15. Java примеры – Равенство двух массивов
- 4.16. Java примеры – Сравнить массивы
- 5. Java примеры – Дата и время
- 5.1. Java примеры – Форматирование времени в формате AM-PM
- 5.2. Java примеры – Получение названия и номера текущего месяца
- 5.3. Java примеры – Получить текущее время в часах и минутах
- 5.4. Java примеры – Вывести текущее время и дату
- 5.5. Java примеры – Вывести текущее время в 24-часовом формате
- 5.6. Java примеры – Получить текущий месяц
- 5.7. Java примеры – Получить текущие секунды
- 5.8. Java примеры – Получить короткое название месяца
- 5.9. Java примеры – Получить день недели
- 5.10. Java примеры – Добавление времени к дате
- 5.11. Java примеры – Отображение времени в формате другой страны
- 5.12. Java примеры – Отображение времени на разных языках
- 5.13. Java примеры – Прокрутить часы и месяцы
- 5.14. Java примеры – Получить номер недели и месяц в году
- 5.15. Java примеры – Форматы текущей даты
- 6. Java примеры – Методы
- 6.1. Java примеры – Перезагрузка методов
- 6.2. Java примеры – Вывод массива с использованием метода
- 6.3. Java примеры – Решение Ханойской башни
- 6.4. Java примеры – Последовательность чисел Фибоначчи
- 6.5. Java примеры – Вычисление факториала числа
- 6.6. Java примеры – Переопределение метода
- 6.7. Java примеры – Вывод массива с использованием метода
- 6.8. Java примеры – Использование оператора break
- 6.9. Java примеры – Использование оператора continue
- 6.10. Java примеры – Использование метки в методе
- 6.11. Java примеры – Использование операторов enum и switch
- 6.12. Java примеры – Использование конструктора enum
Как перебрать строку в java
Для перебора элементов потока применяется метод forEach() , который представляет терминальную операцию. В качестве параметра он принимает объект Consumer , который представляет действие, выполняемое для каждого элемента набора. Например:
Stream citiesStream = Stream.of("Париж", "Лондон", "Мадрид","Берлин", "Брюссель"); citiesStream.forEach(s->System.out.println(s));
Фактически это будет аналогично перебору всех элементов в цикле for и выполнению с ними действия, а именно вывод на консоль. В итоге консоль выведет:
Париж Лондон Мадрид Берлин Брюссель
Кстати мы можем сократить в данном случае применение метода forEach следующим образом:
Stream citiesStream = Stream.of("Париж", "Лондон", "Мадрид","Берлин", "Брюссель"); citiesStream.forEach(System.out::println);
Фактически здесь переадается ссылка на статический метод, который выводит строку на консоль.
Фильтрация. Метод filter
Для фильтрации элементов в потоке применяется метод filter() , который представляет промежуточную операцию. Он принимает в качестве параметра некоторое условие в виде объекта Predicate и возвращает новый поток из элементов, которые удовлетворяют этому условию:
Stream citiesStream = Stream.of("Париж", "Лондон", "Мадрид","Берлин", "Брюссель"); citiesStream.filter(s->s.length()==6).forEach(s->System.out.println(s));
Здесь условие s.length()==6 возвращает true для тех элементов, длина которых равна 6 символам. То есть в итоге программа выведет:
Лондон Мадрид Берлин
Рассмотрим еще один пример фильтрации с более сложными данными. Допустим, у нас есть следующий класс Phone:
class Phone < private String name; private int price; public Phone(String name, int price)< this.name=name; this.price=price; >public String getName() < return name; >public void setName(String name) < this.name = name; >public int getPrice() < return price; >public void setPrice(int price) < this.price = price; >>
Отфильтруем набор телефонов по цене:
Stream phoneStream = Stream.of(new Phone("iPhone 6 S", 54000), new Phone("Lumia 950", 45000), new Phone("Samsung Galaxy S 6", 40000)); phoneStream.filter(p->p.getPrice()<50000).forEach(p->System.out.println(p.getName()));
Отображение. Метод map
Отображение или маппинг позволяет задать функцию преобразования одного объекта в другой, то есть получить из элемента одного типа элемент другого типа. Для отображения используется метод map , который имеет следующее определение:
Stream map(Function mapper)
Передаваемая в метод map функция задает преобразование от объектов типа T к типу R. И в результате возвращается новый поток с преобразованными объектами.
Возьмем вышеопределенный класс телефонов и выполним преобразование от типа Phone к типу String:
Stream phoneStream = Stream.of(new Phone("iPhone 6 S", 54000), new Phone("Lumia 950", 45000), new Phone("Samsung Galaxy S 6", 40000)); phoneStream .map(p-> p.getName()) // помещаем в поток только названия телефонов .forEach(s->System.out.println(s));
Операция map(p-> p.getName()) помещает в новый поток только названия телефонов. В итоге на консоли будут только названия:
iPhone 6 S Lumia 950 Samsung Galaxy S 6
Еще проведем преобразования:
phoneStream .map(p-> "название: " + p.getName() + " цена: " + p.getPrice()) .forEach(s->System.out.println(s));
Здесь также результирующий поток содержит только строки, только теперь названия соединяются с ценами.
Для преобразования объектов в типы Integer, Long, Double определены специальные методы mapToInt() , mapToLong() и mapToDouble() соответственно.
Плоское отображение. Метод flatMap
Плоское отображение выполняется тогда, когда из одного элемента нужно получить несколько. Данную операцию выполняет метод flatMap :
Stream flatMap(Function> mapper)
Например, в примере выше мы выводим название телефона и его цену. Но что, если мы хотим установить для каждого телефона цену со скидкой и цену без скидки. То есть из одного объекта Phone нам надо получить два объекта с информацией, например, в виде строки. Для этого применим flatMap:
Stream phoneStream = Stream.of(new Phone("iPhone 6 S", 54000), new Phone("Lumia 950", 45000), new Phone("Samsung Galaxy S 6", 40000)); phoneStream .flatMap(p->Stream.of( String.format("название: %s цена без скидки: %d", p.getName(), p.getPrice()), String.format("название: %s цена со скидкой: %d", p.getName(), p.getPrice() - (int)(p.getPrice()*0.1)) )) .forEach(s->System.out.println(s));
Результат работы программы:
название: iPhone 6 S цена без скидки: 54000 название: iPhone 6 S цена со скидкой: 48600 название: Lumia 950 цена без скидки: 45000 название: Lumia 950 цена со скидкой: 40500 название: Samsung Galaxy S 6 цена без скидки: 40000 название: Samsung Galaxy S 6 цена со скидкой: 36000
Как пройтись по строке java
Для того, чтобы пройтись по строке посимвольно в Java , можно воспользоваться методом toCharArray() класса String . Этот метод возвращает массив символов, представляющий заданную строку.
String str = "Hello, world!"; char[] charArray = str.toCharArray(); for (int i = 0; i charArray.length; i++) char c = charArray[i]; System.out.println(c); >
В этом примере мы создаем строку «Hello, world!» и вызываем метод toCharArray() , чтобы получить массив символов, представляющий эту строку. Затем мы проходим по каждому элементу массива и выводим его на экран:
Перебрать строку назад в Java
В этом посте будут обсуждаться различные методы перебора строки в обратном направлении в Java.
1. Для петли
Мы можем использовать простой цикл for для обработки каждого символа строки в обратном направлении. Этот подход очень эффективен для строк с меньшим количеством символов.
class Main
// Перебираем строку в обратном порядке
public static void main ( String [ ] args )
String s = «Reverse String» ;
// использование простого цикла for
for ( int i = s . length ( ) — 1 ; i >= 0 ; i — ) <
System . out . print ( s . charAt ( i ) ) ;
2. Преобразовать в массив символов
В этом подходе мы изначально переворачиваем строку. Затем мы преобразуем перевернутую строку в массив символов, используя метод String.toCharArray() метод. Наконец, мы повторяем char[] используя цикл for-each, как показано ниже:
class Main
// Перебираем строку в обратном порядке
public static void main ( String [ ] args )
String s = «Reverse String» ;
// перевернуть строку и преобразовать ее в массив `char[]`
char [ ] chars = new StringBuilder ( s ) . reverse ( ) . toString ( )
. toCharArray ( ) ;
// перебираем char[] с помощью цикла for-each
for ( char ch : chars ) <
System . out . print ( ch ) ;
3. Использование CharacterIterator
Мы также можем использовать CharacterIterator интерфейс, который обеспечивает двунаправленную итерацию для String.
import java . text . CharacterIterator ;
import java . text . StringCharacterIterator ;
class Main
// Проходим по строке в обратном направлении, от конца к началу
public static void traverseBackwards ( CharacterIterator itr )
char ch = itr . last ( ) ;
while ( ch != CharacterIterator . DONE )
System . out . print ( ch ) ;
ch = itr . previous ( ) ;
// Перебираем строку в обратном порядке
public static void main ( String [ ] args )
String s = «Reverse String» ;
CharacterIterator it = new StringCharacterIterator ( s ) ;
traverseBackwards ( it ) ;
4. Использование String.Split() метод
String.split() разбивает указанную строку и возвращает массив строк, созданный путем разбиения этой строки.
class Main
// Перебираем строку в обратном порядке
public static void main ( String [ ] args )
String s = «Reverse String» ;
String [ ] arr = s . split ( «» ) ;
for ( int i = arr . length — 1 ; i >= 0 ; i — ) <
System . out . print ( arr [ i ] ) ;
5. Использование библиотеки Guava
Guava’s Lists.charactersOf() возвращает представление (не копию) указанной строки в виде неизменного списка символов. Получив представление, мы можем обработать его с помощью итератора.
The List Интерфейс предоставляет специальный итератор, называемый ListIterator который обеспечивает двунаправленный доступ. Мы можем назвать List.listIterator(index) способ получить ListIterator над элементами списка, начиная с указанной позиции в списке.