我尝试使用RegEx将以下字符串1.00 h.
转换为1.00
,但是我是新手,需要您的帮助。我尝试了如下
seanceLengthValue = Integer.parseInt(
currentService.getSeanceLength().replaceAll("\\D\\w+",""));
答案 0 :(得分:1)
您可以简单地使用:
seanceLengthValue = Double.parseDouble(
currentService.getSeanceLength().replaceAll(" [a-zA-Z]", "");
在这里,我们用""
替换所有出现的字母和空格。另外,由于结果字符串将是 double ,因此您需要使用Double.parseDouble()
进行转换。
答案 1 :(得分:1)
这是您可以做到的
String str = "1.00 h";
Pattern p = Pattern.compile("^(\\S+)");
Matcher m = p.matcher(str);
m.find();
Log.i("Findings", "value is >>" + m.group(0) + "<<");
这将为您提供空白之前的所有内容。
现在,在解析时,需要以浮点或双精度进行解析,因为它具有浮点值。
seanceLengthValue = Float.parseFloat(m.group(0));
注意::如果有多个空格,则仍然只会出现第一个空格。
例如;如果字符串是“ 1.00 h 2.00 f”;它只会给出“ 1.00”。
答案 2 :(得分:0)
尝试以下模式:(\d*\.\d+|\d+)
它使用交替来匹配各种类型的十进制数字格式:
\d*\.\d+
将匹配零个或多个数字\d
,先按点号\.
,然后再匹配一个或多个数字\d+
,因此它将匹配1.0,.01等。
\d+
-如果有小数点分隔符,则匹配一位或多位数字。