我有一个字符串,我想找出所有日期值,并用特定字符串重新发送它们。
我的代码如下:
String mydata = "{[... \"date\":\"2016-03-16T12:38:28.390Z\"]},{[ ... \"date\":\"2016-03-16T12:38:28.390Z\" ...]}";
Pattern pattern = Pattern.compile("");
Matcher matcher = pattern.matcher(mydata);
while(matcher.find()){
mydata = mydata.replace(matcher.group(), matcher.group().substring(0, 10));
}
System.out.println(mydata);
我应该在Pattern.compile("");
传递什么字符串正则表达式?
我的输出应该如下:
{[... "date":"2016-03-16"]},{[ ... "date":"2016-03-16" ...]}
答案 0 :(得分:0)
import org.json.*;
JSONObject obj = new JSONObject("{[... "date":"2016-03-16"]},{[ ... "date":"2016-03-16" ...]}");
其余代码取决于你的json结构。看看:
或
答案 1 :(得分:0)
我不确定输入中的T
和Z
。如果它们始终相同,那么正则下面的正则表达式将起作用。如果T
和Z
不一致,请在正则表达式中按T
更改Z
和[A-Z]
。
mydata = mydata.replace(matcher.group(), matcher.group().substring(0, 10));
通过
mydata = matcher.replaceAll("");
获得所需的输出。
String mydata = "{[\"date\":\"2016-03-16T12:38:28.390Z\"]},{[\"date\":\"2016-03-16T12:38:28.390Z\"]}";
Pattern pattern = Pattern.compile("T\\d{2}\\:\\d{2}\\:\\d{2}\\.\\d{3}Z");
Matcher matcher = pattern.matcher(mydata);
while(matcher.find()){
mydata = matcher.replaceAll("");
}
System.out.println(mydata);
答案 2 :(得分:0)
如果您想要基于regex
的解决方案,这似乎适用于您的示例
Pattern pattern = Pattern.compile("(\\{\\[.*?\"date\":\"\\d{4}\\-\\d{2}\\-\\d{2}).*?(\"\\]\\})");
Matcher matcher = pattern.matcher(mydata);
while(matcher.find()) {
System.out.println(matcher.group(1) + matcher.group(2));
}
<强> IDEONE DEMO 强>