#java #строки
Как можно строку формата: "-99/9" разбить на массив подстрок {"-","99","/","9"}?
Ответы
Ответ 1
Зачем усложнять? Есть числа и что-то между ними. Выделяем числа с двух сторон пробелами, нормализуем строку, чтобы после разбиения не появилось пустых элементов и готово. import java.util.Arrays; public class Main { public static void main(String[] args) { String str = "2+2*24-78"; str = str.replaceAll("(\\d+)"," $1 "); str = str.trim(); String[] stack = str.split(" "); System.out.println(Arrays.toString(stack)); } } В вопросе ничего не говорилось про десятичный разделитель, функции и скобки. Правильным подходом по решению задачи это не сразу разбивать строку на отдельные лексемы, а считывая ее последовательно обрабатывать конечным автоматом. За основу можно взять алгоритм из статьи про обратную польскую нотацию.Ответ 2
Если не известен заранее формат строки или он может изменяться, то я бы предложил следующий алгоритм. Берем длинну строки Создаем пустой список для заполнения Циклом проходим по символам. Выбираем символ и смотрим числовой он или нет (Приводим символ к числу, потом к строке и проверяем на совпадение). Если числовой то смотрим на последний элемент списка и если там тоже число, то модифицируем дописыванием в конец строки последнего списка.Ответ 3
На вскидку - регуляркой. Или что-то упускаю? Получится что-то вроде такого: (regex) /^(-|+)?(\d+)(\/)(\d+)$/
Комментариев нет:
Отправить комментарий