0

時間値をString表し、次の形式で格納されている があります。

1:31:25

コロンを置き換えて、フォーマットを次のように変更したいと思います。

1h 31m 25s

'h '最初の 2 つのコロンをand'm 'に、文字列の末尾を に置き換えることができる Java の関数はどれですか'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[] 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 に答える
1

正規表現と置換を使用できます。

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

別の方法は、日付を介して文字列を解析して出力することです。

    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 に答える
0

split()を使用する

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 に答える