替换字符串中的值

时间:2013-08-11 10:58:04

标签: java string

我有以下代码,需要及时将值从 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);

8 个答案:

答案 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中运行并获得了

enter image description 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", "");