我正在开发一个获取时间(持续时间)值作为字符串的 Android 应用。
例如,应用可以获得如下值:6 小时 43 分钟
或类似的值:15 分钟
我正在寻找一种在几分钟内将此字符串转换为整数值的方法。
我试过使用这个函数,但我无法提取所需的值:
str = str.replaceAll("[^\\d.]", "");
编辑:
结果可能是 6 小时,唯一已知的条件是分钟总是四舍五入为整数,最小值为 1 分钟
最佳答案
使用正则表达式获取每对数字/时间单位。您可以轻松地解析它:
(\\d+) (\\w+)
第 1 组:数值
第二组:时间单位
(请注意,我在两者之间使用了一个空格(如果您愿意,可以是可选的)
使用 Java Pattern
类来使用正则表达式
Pattern p = Pattern.compile("(\\d+) (\\w+)");
然后您只需迭代每个匹配项以获得一对 type
/value
Matcher m = p.matcher(s);
while(m.find()){
String type = m.group(2);
int value = Integer.parseInt(m.group(1))
...
}
由此,只需使用一个开关将数字转换为分钟并将其添加到变量中,省略 break
以获得一个不错(但效率不高)的转换器:
switch(type){
//Add more time unit in the correct order if needed
case "days":
value *= 24;
case "hours":
value *= 60;
case "mins":
mins += value;
break;
}
每种类型都会将值转换为正确的分钟数,最后,您将得到以分钟为单位的结果。
关于android - 将带时间的字符串转换为分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47324280/