0

我有一个String表示时间值并以以下格式存储的:

1:31:25

我想替换冒号并将格式更改为:

1h 31m 25s

Java 中的什么函数可以让我用'h 'and替换前两个冒号'm ',用's'.

4

7 回答 7

8

你可以这样做:

String[] s = myString.split(":");
String.format("%sh %sm %ss", s);

甚至紧凑!

String.format("%sh %sm %ss", myString.split(":"));
于 2012-06-29T09:51:48.347 回答
2

重复使用String.replaceFirst()方法可以帮助您。

只需将您的第一个 ':' 替换为 'h',然后再次申请 'm' 等。

还有其他选项,根据您的情况,可能更合适/更强大等。

正则表达式在这里可能很有用,可以帮助您解析/拆分这样的字符串。

或者考虑到您正在解析/输出时间,可能还值得一看SimpleDateFormat及其解析/输出日期/时间组合的能力。

事实上,如果您将该日期存储为一个字符串,您可能需要修改该决定。将其存储为日期对象(任何变体)更安全,可以保护您免受无效值的影响,并允许您对这些值执行算术等。

于 2012-06-29T09:47:30.803 回答
2
String time = "1:31:25";
String formattedTime = time.replaceFirst(":","h ").replaceFirst(":","m ").concat("s");
于 2012-06-29T09:49:16.807 回答
2
String input = "1:31:25";
String[] tokens = input.split(":");
String output = tokens[0] + "h " + tokens[1] + "m " + tokens[2] + "s";
于 2012-06-29T09:49:27.130 回答
1

您可以使用正则表达式和替换:

    String input = "1:31:25";
    String expr = "(\\d+):(\\d+):(\\d+)";
    String substitute = "$1h $2m $3s";
    String output = input.replaceAll(expr, substitute);

另一种方法是通过 Date 解析和输出字符串:

    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);
于 2012-06-29T09:50:42.840 回答
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");
于 2012-06-29T10:03:20.810 回答
0

使用拆分()

String s = "1:31:25";
String[] temp = s.split(":");
System.out.println(s[0]+"h"+" "+s[1]+"m"+" "+s[2]+"s");
于 2012-06-29T09:53:21.513 回答