Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式帮助:余额123,33 p=&燃气轮机;123.33(双倍)_Java_Regex_Double - Fatal编程技术网

Java 正则表达式帮助:余额123,33 p=&燃气轮机;123.33(双倍)

Java 正则表达式帮助:余额123,33 p=&燃气轮机;123.33(双倍),java,regex,double,Java,Regex,Double,我是新来的 如何通过正则表达式解析字符串 Balance 123,45 p. 到double123.45 (\d*(,\d+)?) 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.
double
123.45

(\d*(,\d+)?)
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)));
        }   
    }   
}
这将匹配零个或多个数字,后跟可选的逗号和一个或多个数字。e、 g:
12345;123; 12,34; ,25(前导零可以省略)

然后,您可以将逗号替换为点(
string.replace(“,”,“。)
)并对其执行所需操作:)

这将匹配零个或多个数字,后跟可选的逗号和一个或多个数字。e、 g:
12345;123; 12,34; ,25(前导零可以省略)

然后,您可以将逗号替换为一个点(
字符串。替换(“,”,“。)
)并对其执行所需操作:)

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

这在IntelliJ IDEA中起作用

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

这在IntelliJ IDEA中起作用

您可以使用
空格
作为删除器,然后使用
替换

使用之后,它会返回

返回一个初始化为 指定的字符串,由类Double的valueOf方法执行

Output=
123.45

您可以使用
空格
作为删除器,然后使用
替换

(\d*(,\d+)?)
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)));
        }   
    }   
}
使用之后,它会返回

返回一个初始化为 指定的字符串,由类Double的valueOf方法执行


输出=
123.45

注意:不是基于正则表达式的解决方案

(\d*(,\d+)?)
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)));
        }   
    }   
}
在我看来,您得到的字符串似乎来自于一个区域设置,其中十进制分隔符是
,而不是
,您可以这样做:

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

注意:不是基于正则表达式的解决方案

在我看来,您得到的字符串似乎来自于一个区域设置,其中十进制分隔符是
,而不是
,您可以这样做:

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

这是124,45中的逗号吗?这是124,45中的逗号吗?@RanRag我后来也看到了,并修改了我的答案。:)用PHP做的太多了..可能
(\d*(?:,\d+))
,我认为应该捕获整个内容,而不仅仅是逗号后面的部分。@RanRag我后来也看到了它,并修改了我的答案。:)使用PHP做的太多了..可能
(\d*(?:,\d+))
,我认为应该捕获整个内容,而不仅仅是逗号后面的部分。+1我认为这应该是进行数字解析的正确方法。+1我认为这应该是进行数字解析的正确方法。