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我认为这应该是进行数字解析的正确方法。