从列表中删除特定的单词/字符串
问题描述:
我们怎样可以删除与字符串只保存日期:从列表中删除特定的单词/字符串
For ex: String outPut = {Time = 0:0:0} {Timestamp = Tue Oct 20 23:54:10 BST 2013}
我想只有日期
For ex: Tue Oct 20 2013
到目前为止,我已经尝试采用以下方法:
String[] manipulateDate = output.getDate().split("\\{");
for(String s : manipulateDate){
String outputDate = manipulateDate [2].replaceAll("\\}", "").replaceAll("\\s*\\bTimestamp =\\b\\s*","");
System.out.println(outputDate);
}
什么是实现和使用Java日期/字符串的最佳方式?
答
要严格回答你的问题,你可以这样做:
String date = output.replaceAll(".*Timestamp = (.*)? \\d{2}:.*?(\\d{4}).*", "$1 $2");
但它可能是最好解析整个字符串作为日期对象:
String output = "{Time = 0:0:0} {Timestamp = Sun Oct 20 23:54:10 BST 2013}";
String timestamp = output.replaceAll("\\{.*?\\} \\{Timestamp = (.*)\\}", "$1"); //Sun Oct 20 23:54:10 BST 2013
ZonedDateTime dateTime = ZonedDateTime.parse(timestamp, DateTimeFormatter.ofPattern("E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH));
从这一点上,你可以用日期对象做你想做的事情,包括把它打印成字符串。请注意,我将原始字符串更改为星期日(与您的问题中的星期二相比):将其解析为日期也引发了2013年10月20日不是星期四的事实,这是字符串的另一个优点。
+0
谢谢!如果我们不想使用ZonedDateTime,该怎么办?我们可以得到普通的日期为例如:2014-01-01 – user2501165
+0
当然:'dateTime.toLocalDate()' – assylias
不清楚你输入的是什么。请阅读[如何创建最小,完整和可验证示例](http://*.com/help/mcve)。 – Andreas