我有String
表示时间值,并按以下格式存储:
1:31:25
我想替换冒号并将格式更改为:
1h 31m 25s
Java中的哪个函数可以让我用'h '
和'm '
替换前两个冒号,并使用's'
替换字符串的结尾。
答案 0 :(得分:8)
你可以这样做:
String[] s = myString.split(":");
String.format("%sh %sm %ss", s);
甚至紧凑!
String.format("%sh %sm %ss", myString.split(":"));
答案 1 :(得分:2)
重复使用String.replaceFirst()方法可以帮助您。
只需将第一个':'替换为'h',然后再次申请'm'等。
根据您的具体情况,还有其他选项,可能更合适/更强大等。
Regular expressions在这里可能很有用,可以帮助您解析/拆分这样的字符串。
或者鉴于您正在解析/输出时间,也可能值得查看SimpleDateFormat及其解析/输出日期/时间组合的能力。
事实上,如果您将该日期存储为字符串,则可能需要重新启动该决定。将它存储为日期对象(任何变体)更加类型安全,可以保护您免受无效值的影响,并允许您对这些值执行算术等。
答案 2 :(得分:2)
String time = "1:31:25";
String formattedTime = time.replaceFirst(":","h ").replaceFirst(":","m ").concat("s");
答案 3 :(得分:2)
String input = "1:31:25";
String[] tokens = input.split(":");
String output = tokens[0] + "h " + tokens[1] + "m " + tokens[2] + "s";
答案 4 :(得分:1)
您可以使用正则表达式和替换:
String input = "1:31:25";
String expr = "(\\d+):(\\d+):(\\d+)";
String substitute = "$1h $2m $3s";
String output = input.replaceAll(expr, substitute);
另一种方法是通过Date解析并输出String:
DateFormat parseFmt = new SimpleDateFormat("HH:mm:ss");
DateFormat displayFmt = new SimpleDateFormat("H'h' mm\'m' ss's'");
Date d = parseFmt.parse(input);
output = displayFmt.format(d);
答案 5 :(得分:1)
String[] timeStr = "1:31:25".split(":");
StringBuffer timeStrBuf = new StringBuffer();
timeStrBuf.append(timeStr[0]);
timeStrBuf.append("h ");
timeStrBuf.append(timeStr[1]);
timeStrBuf.append("m ");
timeStrBuf.append(timeStr[2]);
timeStrBuf.append("s");
答案 6 :(得分:0)
使用 split()
String s = "1:31:25";
String[] temp = s.split(":");
System.out.println(s[0]+"h"+" "+s[1]+"m"+" "+s[2]+"s");