簡體   English   中英

替換特定位置中的子字符串

[英]Replace substring in a particular postion

String date = "2012-11-28 12:30:30";

我想通過使用String.replace方法將日期替換為2012-11-28 12:00:00

String replacedDate = date.replace(date.substring(14, 19), "00:00");

它工作正常,但如果日期是:

String date = "2012-11-28 18:18:18";

使用上面的方法,結果將是2012-11-28 00:00:28但我希望輸出為2012-11-28 18:00:00

您不需要在此處使用String.replace方法。 如果您知道要替換的確切索引,並且您確定它們將始終相同,那么您可以使用子字符串和字符串連接:

String date = "2012-11-28 12:30:30";
date = date.substring(0, 14) + "00:00";

看到它在線工作: ideone

注意:如果您的字符串確實表示日期,請考慮使用Date類型的變量而不是String

您可以使用忽略分鍾和秒的Date解析器,而不是直接操作字符串:

String s = "2012-11-28 12:30:30";
//skip the minutes, seconds
Date date = new SimpleDateFormat("yyyy-MM-dd HH").parse(s); 

String result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
System.out.println("result = " + result);

獎勵:如果日期不是預期的格式,您將獲得有用的例外

這是一個約會/時間。 通過解析上述入合適的日期/時間對象並使用的日期/時間相關的方法操縱它把它作為這樣 這樣您就不必依賴substrig / regexp等,也不會冒着創建無效日期/時間參考的風險。

例如,使用SimpleDateFormatCalendar ,或使用Joda-Time獲得更直觀,更健壯的API。

目前,您有一個字符串式系統,而不是類型系統。

您也可以先要求第一個':'然后添加“00:00”

String date="2012-11-28 18:18:18";
int i = date.indexOf(':');
String format = date.substring(0,i+1) + "00:00";

我認為你的解決方案不起作用,因為replace方法有這個簽名

public String replace(char oldChar, char newChar)

public String replace(String oldChar, String newChar)

這個答案是為了解問題,解決問題,考慮其他好的答案!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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