2016-04-06 4 views
2

Мой ввод строки String Number = "546 + 90".Java String output

Я хочу дать вывод как это "546 + 90". Как я могу сделать это в java? Сейчас я пытаюсь:

Number.replaceAll("[0-9]"," "); 

Но он, похоже, не работает. У кого-нибудь есть предложения?

+2

Не капитализировать имена переменных – redFIVE

+0

кажется там неустройство ли вход «Строка Number = 546 + 90» или просто «546 + 90» –

+0

Я сделал mistake.sorry !!!. его «546 + 90». Я отредактировал его. –

ответ

0

Во-первых, Number является встроенным классом в пакете java.lang, поэтому вы никогда не должны использовать это имя.

Во-вторых, переменные должны быть записаны в нижнем регистре, поэтому это должно быть number.

В-третьих, строки неизменяемы, поэтому необходимо получить возвращаемое значение от replaceAll().

Если вы хотите эту строку: "String Number=546+90"
стать эта строка: "546 + 90"
то, что вам нужно раздеться, прежде чем что-нибудь = и добавить пробелы вокруг +.

Это может быть сделано с помощью цепочки replace вызовов:

String number = "String Number=546+90"; 
number = number.replaceFirst(".*=", "") 
       .replaceAll("\\+", " + "); 
System.out.println(number); 

Если вы хотите, чтобы другие операторы тоже использовать символьный класс. Вы должны захватить символ, чтобы сохранить его в заменяющей строке, а вы должны поставить - первым или последним (или убежать от него).

number = number.replaceFirst(".*=", "") 
       .replaceAll("([-+*/%])", " $1 "); 
+0

Он работает !!! Спасибо. вы объясните, почему вы используете $ 1? –

+0

Таким образом, что любой символ оператора будет сохранен. См. ['Matcher.appendReplacement()'] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#appendReplacement%28java.lang.StringBuffer,%20java. lang.String% 29) для полного описания. – Andreas

2

Строки неизменны, так что вам нужно, чтобы получить строку равнодействующую метода замены:

public static void main(String[] args) { 
     String number="546+90"; 
     number = number.replaceAll("\\+" , " + "); 

     System.out.println(number); 
    } 
+2

нет + зарезервировано? может понадобиться побег –

+1

да, он должен быть scaped ... спасибо за комментарий –

0

Добавление экранирующих символов будет решить вашу проблему
номер строки = «\»»+„546 + 90“ + "\" ";