正则表达式帮助:余额123,33 p。 => 123.33(双)

时间:2012-02-03 12:15:45

标签: java regex double

我是正则表达式的新手 ..

如何通过正则表达式解析字符串

Balance 123,45 p.

double 123.45

5 个答案:

答案 0 :(得分:5)

注意:不是基于Regex的解决方案。

对我而言,您所获得的字符串似乎来自小数点分隔符为,而非.的语言环境,您可以执行以下操作:

    NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
    Number n = nf.parse("123,45");
    Double d = n.doubleValue();
    System.out.print(d);

答案 1 :(得分:1)

(\d*(,\d+)?)

这将匹配零个或多个数字,后跟可选的逗号和一个或多个数字。例如:1,2345; 123; 12,34; ,25 (leading zero may be omitted)

然后您可以用逗号(string.replace(',', '.'))替换逗号并用它做你想做的事情:)

答案 2 :(得分:1)

搜索Balance (\d*),(\d*) p\. 替换为double \$1.\$2

这适用于IntelliJ IDEA

答案 3 :(得分:1)

您可以将String.split()space用作分隔符,而不是使用String.replaceAll(),替换为.

之后使用parseDouble。它返回,

  

返回一个新的double,初始化为由。表示的值   指定的String,由Double类的valueOf方法执行。

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

答案 4 :(得分:1)

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)));
        }   
    }   
}