2017-09-14 99 views
2

這是我想從中刪除日期值的json。正則表達式無效

 { 
     "mCheckInTime": null, 
     "mCheckOutTime": null, 
     "mLateArrivalTime": "2017-09-14T18:00:00.000+05:00", 
     "mNumberOfBeds": 0 
     } 

而這一次是coresponding正則表達式

String valueRegex = "^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\+\\d{2}:\\d{2})$"; 
    String message = message.replaceAll(valueRegex, ""); 

當我運行這段代碼,它什麼都不做。 有人請幫我解決這個問題,這裏有什麼問題?

+3

不是你重新定義'字符串消息= message.replaceAll(valueRegex, 「」);'?不應該編譯器哭泣? – Mritunjay

+0

@Mritunjay多數民衆贊成在他可能意味着什麼'代碼什麼都不做'大聲笑 – XtremeBaumer

回答

1

您需要刪除^(開始)和$(完)從你的正則表達式元字符:

String message = "{\n" + 
       " \"mCheckInTime\": null,\n" + 
       " \"mCheckOutTime\": null,\n" + 
       " \"mLateArrivalTime\": \"2017-09-14T18:00:00.000+05:00\",\n" + 
       " \"mNumberOfBeds\": 0\n" + 
       " }"; 

String regex = "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\+\\d{2}:\\d{2}"; 

System.out.println(message.replaceAll(regex, "")); 

我們得到以下的輸出:

{ 
    "mCheckInTime": null, 
    "mCheckOutTime": null, 
    "mLateArrivalTime": "", 
    "mNumberOfBeds": 0 
} 
+0

非常感謝羅比,它幫助。 –

0

這個怎麼樣的解決方案?

StringBuilder sb = new StringBuilder(); 
    sb.append("{"); 
    sb.append("\"mCheckInTime\":null,"); 
    sb.append("\"mCheckOutTime\":null,"); 
    sb.append("\"mLateArrivalTime\":\"2017-09-14T18:00:00.000+05:00\","); 
    sb.append("\"mNumberOfBeds\":0"); 
    sb.append("}"); 
    String valueRegex = "(\"\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}\\+\\d{2}:\\d{2}\")"; 
    String message = sb.toString().replaceAll(valueRegex, "null"); 

結果將是:

{"mCheckInTime":null,"mCheckOutTime":null,"mLateArrivalTime":null,"mNumberOfBeds":0}