Разделение строки по 3 символа

309
14 апреля 2022, 23:40

В данной строчке кода (в теории) должен объявляться массив, в который присваивается огромное предложение без пробелов, разделённое по три символа (случаи, когда кол-во символов в предложении не кратно трём отбросим). Почему-то не пашет регулярное выражение и в массив присваивается пустота.

String text="111222333444555666777888999aaabbbcccdddeeefff"
String[] triples = text.split("\\S{3}");
Answer 1

Метод split сделает разделение по строке и вернет массив строк, без разделителя, поэтому этот метод может вам не подойти.

Используйте матчинг через Pattern.matcher:

String text = "111222333444555666777888999aaabbbcccdddeeefff";
Pattern pattern = Pattern.compile("\\S{3}");
Matcher m = pattern.matcher(text);
List<String> triples = new ArrayList<>();
while (m.find()) {
    triples.add(m.group());
}
System.out.println(triples);
// [111, 222, 333, 444, 555, 666, 777, 888, 999, aaa, bbb, ccc, ddd, eee, fff]
Answer 2

Можно сначала добавить пробелы через каждые 3 символа, а потом разделить по ним:

String text = "111222333444555666777888999aaabbbcccdddeeefff";
String[] triples = text.replaceAll("(.{3})","$1 ").split(" ");
System.out.println(Arrays.toString(triples));
// [111, 222, 333, 444, 555, 666, 777, 888, 999, aaa, bbb, ccc, ddd, eee, fff]

См. Разбить строку на триады

READ ALSO
Вылетает NoSuchElementException в NetBeans

Вылетает NoSuchElementException в NetBeans

Я не могу понять, почему в NetBeans у меня вылетает исключение NoSuchElementException ещё до ввода данныхДо этого программу запускал в VS Code, и там всё работало...

150
Передача битовой информации по Bluetooth

Передача битовой информации по Bluetooth

я - новичок, так что не судите строгоЯ разрабатываю приложение на Java под Android

149
Работа с Predicate

Работа с Predicate

У меня есть задача, нужно сделать фильтры для стримов с разными типами объектов

255