2016-08-22 79 views
0

我正在嘗試查找和更新字符串的值。該字符串是客戶端發送的重複規則,我需要獲取until屬性併爲其添加時間。 (詩時刻設定/ setHour ......是depricated)如何查找和更新嵌入在Java中的字符串中的屬性

我有的是:

import java.util.Calendar; 


public class TestReplaceString { 

/** 
* @param args 
*/ 
public static void main(final String[] args) { 

    String originalRecurrenceRule = "FREQ=WEEKLY;INTERVAL=1;BYDAY=FR;WKST=MO;UNTIL=20160731T223030Z;"; 
    System.out.println("Unformated: " + originalRecurrenceRule); 



    System.out.println("Formated: " + originalRecurrenceRule.replaceAll("UNTIL.*?Z", "UNTIL=" + "sameDateAsPassedByTheCLient" + "T235959Z;")); 

}

這樣做的問題是,我需要保持客戶端提供的日期和只加一次如

日期20170101T220000Z將成爲20170101T235959Z

我試圖做到的是像一個驗證來獲得prope rty直到字符串並改變它。 歡迎任何建議。

親切的問候

+0

'。 replaceAll'是不正確的做法。您需要解析所需的日期字符串,使用'SimpleDateFormat'將其解析爲'Date'對象,添加時間,然後將其放回原始字符串中。 – anubhava

+0

我需要一個正則表達式在轉換之前從字符串中提取UNTIL屬性嗎? –

回答

1

像這樣的東西可能會多一點適合:

String originalRecurrenceRule = "FREQ=WEEKLY;INTERVAL=1;BYDAY=FR;WKST=MO;UNTIL=20160731T223030Z;"; 
String until = originalRecurrenceRule.substring(originalRecurrenceRule.indexOf("UNTIL"), originalRecurrenceRule.indexOf(";", originalRecurrenceRule.indexOf("UNTIL"))); 
SimpleDateFormat sdf = new SimpleDateFormat(); 
Date date = sdf.parse(until.substring(until.indexOf("=") + 1),until.length() - 1); 
date.setTime(timeInMilliseconds); 
originalRecurrenceRule.replace(until, "UNTIL="+ date.toString() + ";");