2016-03-01 67 views
-1

我有一些問題從String行解析一些信息。在這個例子中,我想使用線「2011-08-28 19:02:30」。 我有很多這個模板的線。如何解析這個日期?謝謝這條線如何分割日期?

[47.611910999999999, -122.335178] 6 2011-08-28 19:02:30 I'm at Saigon Vietnamese Restaurant II (1529 6th Ave., at Pine St., Seattle) http://t.co/8s86hNX 

謝謝大家。這是我的解決方案。

private Date parseDate(String line) { 
    line = line.replaceAll("\\s+", " ").trim(); 
    String[] masWords = line.split(" "); 
    DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date date = null; 
    try { 
     date = format.parse(masWords[3] + " " + masWords[4]); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return date; 
} 
+0

@sferencik有必要削減字符串日期 –

+0

@ЕгорУрбанович搜索字符串分割。 –

回答

2
  1. 拆分與作爲分隔符String[] parts = str.split(" ");
  2. 遍歷parts[]空間尋找項目符合您的日期和時間。
  3. 您可以使用下面的正則表達式:
    • 日期:\d{4}-\d{2}-\d{2}
    • 時間:\d{2}:\d{2}:\d{2}
  4. 可以包含你的時間和日期檢測字符串中使用工作java.util.Date
3

我'd就這樣做:

String[] s1 = "[47.611910999999999, -122.335178] 6 2011-08-28 19:02:30 I'm at Saigon Vietnamese Restaurant II (1529 6th Ave., at Pine St., Seattle) http://t.co/8s86hNX".split(" "); 
     DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     for(int i = 1; i< s1.length ; i++ ){ 
      try { 
       Date date = format.parse(s1[i-1]+" "+s1[i]); 
       System.out.println("Date found: "+s1[i-1]+" "+s1[i]); 
       break; 
      } catch (ParseException e) { 
       continue; 
      } 
     } 
  1. 分割字符串
  2. 遍歷字符串數組
  3. 投至今,直到你找到了一個有效的日期。

如果你知道日期總是在字符串中的同一個地方,你可以做到這一點很容易被你投:

String[] s1 = "[47.611910999999999, -122.335178] 6 2011-08-28 19:02:30 I'm at Saigon Vietnamese Restaurant II (1529 6th Ave., at Pine St., Seattle) http://t.co/8s86hNX".split(" "); 
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
format.parse(s1[6]+" "+s1[7]); 
3

您需要通過正常化您的字符串去除多餘的空格 ...()正則表達式可以做到快速和容易的),然後分割字符串將字符串,你需要建立一個日期解析那些Date對象Woala的元素...

片段爲這樣的:在我的例子

String chain = "[47.611910999999999, -122.335178] 6 2011-08-28 19:02:30 I'm at Saigon Vietnamese Restaurant II (1529 6th Ave., at Pine St., Seattle) http://t.co/8s86hNX"; 
     chain = chain.replaceAll("\\s+", " ").trim(); 
     System.out.println(chain); 
     String[] var = chain.split(" "); 
     for (String string : var) { 
      System.out.println(string); 
     } 

     String string = var[3] + " " + var[4]; 
     DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     Date date = format.parse(string); 
     System.out.println(date); 
+0

很好的例子。謝謝) –

+0

不客氣! –