使用像123.456mm
这样的Stings,我希望得到一个带有数字的字符串,另一个带有测量结果。所以在上面的例子中,一个字符串包含123.456
,另一个字符串包含mm
。到目前为止,我有这个:
String str = "123.456mm";
String length = str.replaceAll("[\\D|\\.*]+","");
String lengthMeasurement = str.replaceAll("[\\W\\d]+","");
println(length, lengthMeasurement);
输出结果为:
123456 mm
点已经消失,我无法取回它。 我怎么能留点?
答案 0 :(得分:2)
您可以使用:
String str = "123.456mm";
String length = str.replaceAll("[^\\d.]+",""); // 123.456
String lengthMeasurement = str.replaceAll("[\\d.]+",""); // mm
答案 1 :(得分:0)
使用以下正则表达式尝试Pattern和Matcher,并从索引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
答案 2 :(得分:0)
尝试,
String str = "123.456mm";
String str1 = str.replaceAll("[a-zA-Z]", "");
String str2 = str.replaceAll("\\d|\\.", "");
System.out.println(str1);
System.out.println(str2);
输出:
123.456
mm