我有以下代码,需要及时将值从 PT14H01M00S 替换为 14:01:00 以下代码省略前两个字符但我得到14H01M00S,没有使用字符串生成器就没有办法做到这一点?
String time = "PT14H01M00S";
String substring = time .substring(2);
substring.replace("H", ":");
substring.replace("M", ":");
substring.replace("S", "");
System.out.println(substring);
答案 0 :(得分:5)
您可以使用正则表达式并替换
^..(\d\d)H(\d\d)M(\d\d)S$
与
$1:$2:$3
(我将代码的细节留作读者的练习。)
答案 1 :(得分:4)
你忘了做
String time = "PT14H01M00S";
String substring = time .substring(2);
substring = substring.replace("H", ":");
substring = substring.replace("M", ":");
substring = substring.replace("S", "");
System.out.println(substring);
因此substring
未获得从replace
方法
在here中运行并获得了
答案 2 :(得分:3)
您似乎正在尝试解析并格式化JodaTime Period
。您不应该使用String类API来执行此操作。使用JodaTime API中已经提供的相应格式化程序。
您应该使用PeriodFormatter
类构建2 PeriodFormatterBuilder
,一个用于将给定字符串解析为Period
,然后用于将Period
格式化为所需格式:
String periodString = "PT14H01M00S";
PeriodFormatter parser = new PeriodFormatterBuilder()
.appendLiteral("PT")
.appendHours().appendSuffix("H")
.appendMinutes().appendSuffix("M")
.appendSeconds().appendSuffix("S")
.toFormatter();
PeriodFormatter formatter = new PeriodFormatterBuilder()
.minimumPrintedDigits(2)
.printZeroAlways()
.appendHours()
.appendSeparator(":")
.appendMinutes()
.appendSeparator(":")
.appendSeconds()
.toFormatter();
System.out.println(formatter.print(parser.parsePeriod(periodString)));
<强>输出:强>
14:01:00
答案 3 :(得分:2)
请改用此代码:
String time = "PT14H01M00S";
String substring = time .substring(2);
substring = substring.replace("H", ":");
substring = substring.replace("M", ":");
substring = substring.replace("S", "");
答案 4 :(得分:2)
我认为这应该有用
String time = "PT14H01M00S".substring(2, time.length - 1).replace(/H|M/, ":");
答案 5 :(得分:2)
replace
方法不会更改调用它的字符串,它会返回一个新字符串。
所以你想要的是:
String time = "PT14H01M00S";
String substring = time .substring(2);
substring = substring.replace("H", ":");
substring = substring.replace("M", ":");
substring = substring.replace("S", "");
答案 6 :(得分:2)
我建议使用regular expressions来执行此类任务。它们非常强大,可以搜索和替换文本模式。
答案 7 :(得分:2)
使用此代码
String substring = time .substring(2);
substring = substring.replaceAll("[HM]",":").replace("S", "");