Как извлечь только буквы из строкового уравнения Java - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь извлечь буквы для переменных в строковом «уравнении».Затем сохраните его в массив String, называемый переменными.Однако, когда я печатаю массив переменных, он полон «пустых контейнеров»

Как сделать так, чтобы в контейнерах переменных String [] не было пустых пространств?

String equation = "(a+2)/3*b-(28-c)";

String[] variables = equation.split("[+-/*0-9()]");

for(int i = 0 ; i < variables.length; ++i)
{
    System.out.println(variables[i]);
}

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Сначала замените все не переменные символы (соответствующие [+*-\\/0-9)(]) пустой строкой, затем измените ее на массив символов, попробуйте этот

String equation="(a+2)/3*b-(28-c)";
char[] variables= equation.replaceAll("[+*-\\/0-9)(]","").toCharArray();        

  for(int i = 0 ; i < variables.length; ++i)
{
    System.out.println(variables[i]);
}
0 голосов
/ 12 сентября 2018

Учитывая, что ваше уравнение может иметь вложенный контент, одно решение регулярного выражения может быть неоптимальным.Вместо этого я рекомендую использовать средство сопоставления с образцом и просто сканировать все уравнение на наличие буквенных переменных:

String equation = "(a+2)/3*b-(28-c)";
String pattern = "[A-Za-z]+";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(equation);

while (m.find()) {
     System.out.println("Found a variable: " + m.group(0));
}

Found a variable: a
Found a variable: b
Found a variable: c

Примечание. Это решение предполагает, что вы только хотите сами имена переменных, а выне заботятся о таких вещах, как префиксы или коэффициенты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...