2012-05-15 3 views
-1

Мне нужно написать метод, который примет строку как "1+2+3*4" и добавит пробелы между каждым символом и удалит пробелы, если их слишком много. Строка, переданная в может иметь пробелы/не имеет пробелов, я должен убедиться, что между каждым символом есть только одно пространство.Простой интервал в выходе

Если бы кто-то мог удовлетворить простой и наименее сложный способ достижения этого, я был бы очень благодарен.

+0

Что вы уже пробовали? Какие у вас проблемы? Какой язык программирования вы используете? Зачем вам это нужно? –

+0

О, извините, это мой первый раз здесь. Забыл включить это. Я программирую в java, и я попытался использовать цикл for, чтобы пройти через строку и найти два символа рядом друг с другом, и если они были пустыми, я бы добавил промежуток между ними. Мне нужно сделать это, потому что это часть более крупного проекта, эта часть, если вы проверяете ввод пользователя, потому что остальная часть моей программы требует, чтобы формула находилась в разложенной форме. – GAYLORDEVILCHOWMAN

+0

Как упоминалось выше, это часть более крупной программы калькулятора, которую я делаю, но да, проект должен быть завершен для школы. – GAYLORDEVILCHOWMAN

ответ

1

Это решение нормализует пробелы вокруг каждого оператора.

return expr.replaceAll("(?<=\\d)\\s*([-+/*])\\s*(?=\\d)", " $1 "); 
+1

Это замечательно, но мне действительно нужно что-то более простое. Я хочу быть в состоянии понять, что происходит. – GAYLORDEVILCHOWMAN

0

Обычно понятный код лучше.

Более понятный подход с грубой силой, возможно медленный, без каких-либо сложных регулярных выражений, использует String.replace.

  1. Удалить все места. например String.replace(" ", "");
  2. Затем замените каждый оператор оператором пробелами, например. String.replace("+", " + ");

e.g. полный код (предупреждение - не проверено!)

static final String[] ALL_MY_OPS = { "+", "-", "*", "//"}; 

public static String cleanup(String in) { 
    String result = in.replace(" ", ""); // remove all spaces 
    for (String op : ALL_MY_OPS) { 
     String replacement = " " + op + " "; 
     result = result.replace(op, replacement); 
    } 

    return result; 
} 
Смежные вопросы