我想知道从字符串中分割十进制数的正则表达式
str = "COD Amount = 333.98"
在上面的字符串值中我只需要十进制值,即333.98
。
答案 0 :(得分:4)
使用正则表达式是强制性的吗?如果不是,那么您可以使用:
public class Split {
public static void main(String[] args) {
String line = "COD Amount = 333.98";
String[] array = line.split("=");
double amount = Double.parseDouble(array[1]);
System.out.println(amount);
}
}
希望它有所帮助。
修改强>
使用正则表达式:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Split {
public static void main(String[] args) {
String line = "COD Amount = 333.98";
Pattern p = Pattern.compile(".+= (\\d+\\.\\d+)");
Matcher m = p.matcher(line);
if (m.find()) {
System.out.println(m.group(1));
}
}
}
但要确保所有字符串格式相同:[code] [description] = [number]
(我仍然认为第一种解决方案最合适)
编辑2
由于你的输入是这样的:
"COD Amount = 333.98, Coverage = $564.000"
(您应该在原始问题中向我们提供整行的格式)
您可以结合以前的两个解决方案:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Split {
public static void main(String[] args) {
String line = "COD Amount = 333.98, Coverage = $564.000";
String[] array = line.split(",");
for (int i = 0; i < array.length; i++) {
Pattern p = Pattern.compile(".+= \\$?(\\d+\\.\\d+)");
Matcher m = p.matcher(array[i]);
if (m.find()) {
System.out.println(m.group(1));
}
}
}
}