[英]Java: replacing characters in a String
我有一個表示時間值的String
,並以以下格式存儲:
1:31:25
我想替換冒號並將格式更改為:
1h 31m 25s
Java中的什么函數可以讓我用'h '
和'm '
替換前兩個冒號,並用'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 input = "1:31:25";
String expr = "(\\d+):(\\d+):(\\d+)";
String substitute = "$1h $2m $3s";
String output = input.replaceAll(expr, substitute);
一種替代方法是通過Date解析並輸出String:
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);
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");
使用split()
String s = "1:31:25";
String[] temp = s.split(":");
System.out.println(s[0]+"h"+" "+s[1]+"m"+" "+s[2]+"s");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.