Справка по регулярному выражению: Баланс 123,33 р.=> 123,33 (двойной) - PullRequest
1 голос
/ 03 февраля 2012

Я новичок в regex ..

Как мне разобрать строку через регулярное выражение

Balance 123,45 p.

до double 123.45

Ответы [ 5 ]

5 голосов
/ 03 февраля 2012

Примечание: Не решение на основе регулярных выражений.

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

    NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
    Number n = nf.parse("123,45");
    Double d = n.doubleValue();
    System.out.print(d);
1 голос
/ 03 февраля 2012
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.lang.Double;

public class RegExpTest {
    public static void main(String[] args) {

        String str = "Balance 123,45 p.";

        String p = "Balance (\\d+),(\\d+) p";
        Pattern pattern = Pattern.compile(p);
        Matcher matcher = pattern.matcher(str);
        if (matcher.find()){
             System.out.println(Double.parseDouble(matcher.group(1)+"."+matcher.group(2)));
        }   
    }   
}
1 голос
/ 03 февраля 2012

Поиск Balance (\d*),(\d*) p\. Заменить на double \$1.\$2

Это работает в IntelliJ IDEA

1 голос
/ 03 февраля 2012

Вы можете использовать String.split () с space в качестве разделителя и затем использовать String.replaceAll () для замены , на ..

После этого используйте parseDouble .It возвращает,

Возвращает новый double, инициализированный значением, представленным указанной строкой, как выполнено методом valueOf класса Double.

String number = "Balance 123,45 p.";
String[] number_array = number.split(" ");

String str = (number_array[1].replaceAll(",","."));
double d = Double.parseDouble(str);
System.out.println(d);

Выход = 123.45

1 голос
/ 03 февраля 2012
(\d*(,\d+)?)

Это будет соответствовать нулю или нескольким числам, за которыми следует запятая и одно или несколько чисел. например: 1,2345; 123; 12,34; ,25 (leading zero may be omitted)

Затем вы можете заменить запятую на точку (string.replace(',', '.')) и делать с ней что хотите:

...