Добрый день, возник такой вопрос: есть текстовый документ в котором записаны числа, которые необходимо считать. Но помимо чисел в документе есть комментарии обёрнутые в скобки "( )", далее пример строки: "(комментарий) 15 10( - числа, которые нужно считать (комментарии могут быть вложенными друг в друга) ) 22" в этой строке полезные числа - 15, 10 и 22. Основная проблема для меня в том, что между скобками и всем остальным может не быть пробелов (пробелы точно есть только между числами). То есть считывать при помощи метода .next из стандартного класса Scanner не представляется возможным. Так же не получается считывать посимвольно (Bufferedreader метод read), потому что тогда непонятно как считывать числа (не понять где числа разделены пробелом, а где - нет). Какой способ я упускаю? Спасибо за ответы
Вы можете использовать регулярные выражения для поиска нужной вам информации. Например, для поиска чисел в тесте вы можете использовать следующее решение:
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher("string1234(((more56))7))string890");
while (m.find()) {
System.out.println(m.group()); //1234 56 7 890
}
Можно ли создать такой паттерн, чтобы обработать строку например: "123(56(7))" либо просто "123(комментарий" мне как то нужно взять только те цифры, которые перед скобкой в одной строке
pshevnin, Получите все группы совпадений -> Превратите каждую группу в строку -> Соберите в одну строку
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher("string1234(((more56))7))string890");
StringBuilder sb = new StringBuilder();
while (m.find()) {
sb.append(m.group());
}
System.out.println(sb.toString()); //1234567890