2016-08-22 4 views
0

文字列の値を見つけて更新しようとしています。この文字列は、クライアントが送信した繰り返しルールで、untilプロパティを取得して時間を追加する必要があります。私が持っているもの(詩のsetTime/setHour ...が廃止予定される)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 iが達成しようとした何20170101T235959Z

なる例えば

はプロペを取得するためにバリのようなものです文字列からUNTILを削除して変更します。 ご提案は大歓迎です。

種類よろしく

+0

'。 replaceAll'は正しいアプローチではありません。目的の日付文字列を解析し、 'SimpleDateFormat'を使って' Date'オブジェクトに解析し、時刻を加えて元のStringに戻す必要があります。 – 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() + ";"); 
関連する問題