時間値をString
表し、次の形式で格納されている があります。
1:31:25
コロンを置き換えて、フォーマットを次のように変更したいと思います。
1h 31m 25s
'h '
最初の 2 つのコロンをand'm '
に、文字列の末尾を に置き換えることができる Java の関数はどれですか's'
。
次のようなことができます。
String[] s = myString.split(":");
String.format("%sh %sm %ss", s);
もしくはコンパクト!
String.format("%sh %sm %ss", myString.split(":"));
String.replaceFirst()メソッドを繰り返し使用すると、ここで役立ちます。
最初の「:」を「h」に置き換えてから、「m」などに再度適用してください。
状況に応じて、より適切/堅牢などの追加オプションがあります。
正規表現は、このような文字列を解析/分割するのに役立つ場合があります。
または、時間を解析/出力していることを考えると、 SimpleDateFormatと、日付/時刻の組み合わせを解析/出力する機能も検討する価値があります。
実際、その日付を文字列として保存している場合は、その決定をやり直したいと思うかもしれません。それを日付オブジェクトとして保存すると(バリアントが何であれ)、よりタイプセーフになり、無効な値から保護され、これらに対して算術演算などを実行できます。
String time = "1:31:25";
String formattedTime = time.replaceFirst(":","h ").replaceFirst(":","m ").concat("s");
String input = "1:31:25";
String[] tokens = input.split(":");
String output = tokens[0] + "h " + tokens[1] + "m " + tokens[2] + "s";
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");
正規表現と置換を使用できます。
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);
split()を使用する
String s = "1:31:25";
String[] temp = s.split(":");
System.out.println(s[0]+"h"+" "+s[1]+"m"+" "+s[2]+"s");