簡體   English   中英

Java:替換字符串中的字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM