Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 正则表达式,字符串到浮点数,去掉其他字符_Java_Regex - Fatal编程技术网

Java 正则表达式,字符串到浮点数,去掉其他字符

Java 正则表达式,字符串到浮点数,去掉其他字符,java,regex,Java,Regex,对于像123.456mm这样的刺,我想得到一个带数字的字符串,另一个带测量值的字符串。因此,在上述情况下,一个字符串为123.456,另一个字符串为mm。到目前为止,我有: String str = "123.456mm"; String length = str.replaceAll("[\\D|\\.*]+",""); String lengthMeasurement = str.replaceAll("[\\W\\d]+",""); println(length, lengthMeas

对于像
123.456mm
这样的刺,我想得到一个带数字的字符串,另一个带测量值的字符串。因此,在上述情况下,一个字符串为
123.456
,另一个字符串为
mm
。到目前为止,我有:

String str = "123.456mm";

String length = str.replaceAll("[\\D|\\.*]+","");
String lengthMeasurement = str.replaceAll("[\\W\\d]+","");

println(length, lengthMeasurement);
输出为:

123456mm

圆点不见了,我拿不回来了。 如何保留这些点?

您可以使用:

String str = "123.456mm";

String length = str.replaceAll("[^\\d.]+",""); // 123.456
String lengthMeasurement = str.replaceAll("[\\d.]+",""); // mm
尝试使用下面的正则表达式,并从索引1和2中获得匹配的组

(\d+\.?\d*)(\D+)

请尝试以下示例代码:

String str = "123.456mm";

Pattern p = Pattern.compile("(\\d+\\.?\\d*)(\\D+)");
Matcher m = p.matcher(str);
if (m.find()) {
    System.out.println("Length: " + m.group(1));
    System.out.println("Measurement : " + m.group(2));
}
输出:

Length:123.456
Measurement :mm
图案说明:

  (                        group and capture to \1:
    \d+                      digits (0-9) (1 or more times)
    \.?                      '.' (optional (0 or 1 time))
    \d*                      digits (0-9) (0 or more times)
  )                        end of \1

  (                        group and capture to \2:
    \D+                      non-digits (all but 0-9) (1 or more times)
  )                        end of \2
试试看

输出:

123.456
mm

您遇到了问题,决定使用正则表达式。现在你有两个问题。同意Nit。这个问题可能会更好地通过以下方式解决:
Object[]values=newmessageformat(“{0,number}{1}”).parse(str);数字数量=(数字)值[0];字符串单位=(字符串)值[1]不会失败吗?不,单位只是一个空字符串。这就是说,如果您希望使用单位指定一个值,我会小心不允许使用没有单位的数字;假设已知某个特定的度量单位会导致。
123.456
mm