2016-04-21 3 views
-1

Я знаю, как установить разделитель тысяч для чисел, но мне нужно отображать числа с разделителем тысяч в математическом выражении от String значений.Форматирование чисел в математическом выражении из значений String в java

В принципе, я хочу, чтобы эти результаты:

"123456 + 36514" становится "123,456 + 36,514"

"12345678 + 36542 * 69541/987654" становится "12,345,678 + 36,542 * 69,541/987,654"

и ...

+0

@aribeiro Я думаю, что регулярное выражение может помочь мне, но я не понимаю регулярных выражений. – hossein

ответ

1

Вы хотите вставить запятую после цифры, которая сопровождается точное число 3-значных блоков, поэтому:

(?<=\d)   Positive lookbehind: Match a digit 
(?=    Positive lookahead: 
    (?:\d{3})+  One or more sequences of 3 digits 
    \b    Word-boundary, i.e. end of digit sequence 
) 

Это будет соответствовать пустые места, где вы хотите запятые, поэтому сделать replaceAll():

str = str.replaceAll("(?<=\\d)(?=(?:\\d{3})+\\b)", ","); 

См regex101 for demo.

0

Я могу предоставить вам алгоритм, а дает код:

Loop: String of repression one character at a time 
{ 
    If the current char is 0 to 9 append to tempNumber string 
    else 
    { 
     //by the time you reach this line the number is in the tempNumber string 

     Format the number stored in tempNumber // java.text.NumberFormat 
     append the formatted number in targetExpression string 
     append the current char to the targetExpression string 
} 

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