как зделать так чтобы
у нас есть виражение : 5+27/42-54
как виделить все знаки от "/" до "+" то есть 27
и положить в переменную
а потом от "/" до "-"
если ли такая функция которая выделяет все числа от одного знака до другого?
я изучал. split и pattern строки,но я не понял как это зделать,помогите
Andry KIT
5 уровень
привет,скажите есть ли метод которий выделяет все символы от одного знака до другого,( описание ниже)
Решен
Комментарии (18)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ирина Алымова Java Developer в Nerdysoft
24 августа 2021, 02:54
Попробуй метод split("\p{Punct}")
0
ГоффMaster
23 августа 2021, 23:55
"\+.+/"
Примерно так )
0
ГоффMaster
24 августа 2021, 07:28
Это, если что, регулярное выражение =)
0
Andry KIT
24 августа 2021, 11:17
патерн строки?
спасибо
0
ГоффMaster
24 августа 2021, 18:49
Первая часть. Находит всё, что между "+" и "/"
0
Andry KIT
24 августа 2021, 20:20
ясно ,а если я хрчу чтоб нашло все ято между,допустим "*"
то это будет вигледить так?
"\*./"?
0
ГоффMaster
24 августа 2021, 21:43
Ну да. Почитай про регулярные выражения. Тема сложная, но стоит того. В паттернах строки именно регулярное выражение используется. И в сплите - тоже.
0
Andry KIT
26 августа 2021, 13:40
спасибо.я почитал и примерно понял,примерно
слушай вот у меня есть код
по факту он должен вивести
22 и 44
то есть конец первой строки (он должен быть цифровим(22))
и начала второй строки(44)
но где то я напортачил в метосимволах
можеш мне помочь 0
ГоффMaster
26 августа 2021, 17:31
В метасимволах напартачил немного.
"$\d*" - не правильно. "$\\d*" - правильно.
"^\d*" - не правильно. "^\\d*" - правильно
Обратный слэш экранирует следующий за ним символ - то-есть сообщает машине, что следующий символ надо рассматривать как обычный символ. \d - передаёт в интерпретатор просто символ d, потому что слэш интерпретируется всего лишь как команда передать d как есть. Поэтому если мы хотим передать именно регулярное выражение \d, то надо нам обратный слэш заэкранировать, то-есть поставить перед ним... обратный слэш. Вот и получается \\d
0
ГоффMaster
26 августа 2021, 17:40
Ну и я немного не понимаю, что ты делаешь. Зачем здесь сплит?
Вот нашёл аналогичный пример - вывести все числа, то есть идущие подряд цифры:
Выведет
Сделай просто аналогично 0
Andry KIT
26 августа 2021, 18:09
ты не понял. мне надо вывести цифри вокруг знака деление . посмотри мнемательно на мой "текст" это пример
0
hidden #598481
26 августа 2021, 18:27
А если там будет не знак деления, а знак умножения, то уже выделять не надо?
Он тебе дал простую регулярку, которая может вывести все числа из строки.
В твоем случае это четыре числа: 5, 27, 42 и 54. Дальше ты уже можешь их класть в переменные и осуществлять вычисления.
Ты хочешь написать калькулятор, чтобы он вычислял такие выражения?
0
Andry KIT
26 августа 2021, 18:30
я просто обьясил смысл своего кода.он мне очень помог
у меня логика и я уже примерно понял что мне делать
0
ГоффMaster
26 августа 2021, 18:48
Так и говорю - не понимаю, что ты делаешь. Но разобрался - молодец, движемся дальше =)
0
Andry KIT
26 августа 2021, 19:00
слушай.прости что достаю но у меня тут еще одна проблема
0
Andry KIT
26 августа 2021, 19:01
почему этот код не возврощает 2242
0
Andry KIT
26 августа 2021, 19:09
поправка
почему он возврощает 22 а не 2242 0
ГоффMaster
26 августа 2021, 19:12
Ошибка в строке 13: "$\\d*" - это переводится как отсутствие цифр или любое количество цифр после окончания строки. Ты наверное имел в виду "\\d+$"
Аналогично строка 15 - там скорее всего плюс нужен, а не астериск
И я не понимаю, почему ты вайл воткнул, когда всё сделано так, что там нужен иф. И я бы сделал два ифа - не понимаю, зачем два условия комбинировать.
0