Java “转换字符串”;5m 12s 635ms“;至;05:12:635“;
我需要转换如下所示的字符串: “5m 12s 635ms” “5米12秒” “12s 635ms” 等等 注意:字符串可能包含也可能不包含任何单个时间元素 格式为: hh:mm:ss.SSS 有没有一个简单的方法可以做到这一点?我看了SimpleDataFormat,它不需要输入字符串来转换Java “转换字符串”;5m 12s 635ms“;至;05:12:635“;,java,Java,我需要转换如下所示的字符串: “5m 12s 635ms” “5米12秒” “12s 635ms” 等等 注意:字符串可能包含也可能不包含任何单个时间元素 格式为: hh:mm:ss.SSS 有没有一个简单的方法可以做到这一点?我看了SimpleDataFormat,它不需要输入字符串来转换 -Greg我在jdk/joda中找不到支持的库/方法。如果您可以使用自定义方法,下面是一个可以使用的方法 公共静态void main(字符串[]args){ 字符串输入=“5m 12s 635ms”; 字
-Greg我在jdk/joda中找不到支持的库/方法。如果您可以使用自定义方法,下面是一个可以使用的方法
公共静态void main(字符串[]args){
字符串输入=“5m 12s 635ms”;
字符串输入2=“5m 12s”;
字符串输入3=“12s 635ms”;
字符串输入4=“6h 5m 12s 635ms”;
System.out.println(格式化程序(输入));
// 00:05:12.635
System.out.println(格式化程序(input2));
// 00:05:12.000
System.out.println(格式化程序(input3));
// 00:00:12.635
System.out.println(格式化程序(input4));
// 06:05:12.635
}
字符串格式化程序(字符串输入){
字符串[]inputArray=input.split(“”);
字符串格式=”;
长h=0,m=0,s=0,ms=0;
for(字符串i:输入阵列){
如果(i.endsWith(“ms”)){
ms=长数值of(即替换(“ms”),“”);
}否则,如果(i.endsWith(“h”)){
h=长数值(即替换(“h”),“”);
}否则,如果(i.endsWith(“m”)){
m=长数值(即替换(“m”);
}否则,如果(i.endsWith(“s”)){
s=长数值(即替换(“s”);
}
}
格式=字符串。格式(“%02d:%02d:%02d.%03d”,h、m、s、ms);
返回格式;
}
我在jdk/joda中找不到支持的库/方法。如果您可以使用自定义方法,下面是一个可以使用的方法
公共静态void main(字符串[]args){
字符串输入=“5m 12s 635ms”;
字符串输入2=“5m 12s”;
字符串输入3=“12s 635ms”;
字符串输入4=“6h 5m 12s 635ms”;
System.out.println(格式化程序(输入));
// 00:05:12.635
System.out.println(格式化程序(input2));
// 00:05:12.000
System.out.println(格式化程序(input3));
// 00:00:12.635
System.out.println(格式化程序(input4));
// 06:05:12.635
}
字符串格式化程序(字符串输入){
字符串[]inputArray=input.split(“”);
字符串格式=”;
长h=0,m=0,s=0,ms=0;
for(字符串i:输入阵列){
如果(i.endsWith(“ms”)){
ms=长数值of(即替换(“ms”),“”);
}否则,如果(i.endsWith(“h”)){
h=长数值(即替换(“h”),“”);
}否则,如果(i.endsWith(“m”)){
m=长数值(即替换(“m”);
}否则,如果(i.endsWith(“s”)){
s=长数值(即替换(“s”);
}
}
格式=字符串。格式(“%02d:%02d:%02d.%03d”,h、m、s、ms);
返回格式;
}
格式为:hh:mm:ss.SSS
这项工作如下:
- 将
和xxs
转换为yyyms
xx.yyys
- 然后简单地解析持续时间并添加到
实例中LocalTime
5m 12s 635ms --> 00:05:12.635
5m 12s --> 00:05:12.000
12s 635ms --> 00:00:12.635
1h 17m 12s 998ms --> 01:17:12.998
2h 222ms --> 02:00:00.222
如果您的秒数已经是ss.sss格式(例如
12.635s)。但是replaceAll
处理了它
格式为:hh:mm:ss.SSS
这项工作如下:
- 将
和xxs
转换为yyyms
xx.yyys
- 然后简单地解析持续时间并添加到
实例中LocalTime
5m 12s 635ms --> 00:05:12.635
5m 12s --> 00:05:12.000
12s 635ms --> 00:00:12.635
1h 17m 12s 998ms --> 01:17:12.998
2h 222ms --> 02:00:00.222
如果您的秒数已经是ss.sss格式(例如
12.635s)。但是
replaceAll
处理了它。您可以使用正则表达式来解析输入字符串。您可以在regex101.comSplit的空格处试用它们,循环各部分,检查它们是否以您的一个单位(s、ms、m…)结尾,并根据结果构造一个日期或字符串。您可以尝试使用两个simpleDataFormat
s,一个用于解析,另一个用于格式化字符串。提示:最好使用标准字符串(例如:PT5M12.635S
)使用Java类Java.time.Duration
,在一段时间内。您可以使用正则表达式来解析输入字符串。您可以在regex101.comSplit的空格处试用它们,循环各部分,检查它们是否以您的一个单位(s、ms、m等)结尾并从结果中构造一个日期或字符串。您可以尝试使用两个SimpleDataFormat
s,一个用于解析,另一个用于格式化字符串。提示:最好在Java类Java.time.Duration
的情况下,在一段时间内使用标准字符串(例如:PT5M12.635S
)。