怎么从文本中匹配日期格式并按此排序(Java)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么从文本中匹配日期格式并按此排序(Java)相关的知识,希望对你有一定的参考价值。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TestExp

public static void main(String[] args)
List<Map<String,Object>> rs = new ArrayList<Map<String,Object>>();
//假定日期字符串的格式为yyyy-MM-dd
String[] s = "adfkjaskdfakf2012-11-23asdfasdfads",
"asdfasddfafll2011-12-03asdfasfdaa",
"asdfasddfafll2013-02-05asdfasfdaa",
"asdfasddfafll2013-01-03asdfasfdaa";
//用正则表达式匹配日期字符串
Pattern pattern = Pattern.compile("(\\d4)(-)(\\d2)(-)(\\d2)");
for (int i = 0; i < s.length; i++)
Map<String,Object> map = new HashMap<String, Object>();
Date date = null;

Matcher m = pattern.matcher(s[i]);
if(m.find())
try
date = new SimpleDateFormat("yyyy-MM-dd").parse(m.group());
catch (ParseException e)
e.printStackTrace();


map.put("date", date);
map.put("value", s[i]);
rs.add(map);


//用冒泡法排序
for (int i = 0; i < rs.size(); i++)
for (int j = i; j < rs.size(); j++)
if(((Date)rs.get(i).get("date")).after((Date)rs.get(j).get("date")))
Map<String,Object> tmp = rs.set(i, rs.get(j));
rs.set(j, tmp);



for (int i = 0; i < rs.size(); i++)
System.out.println(rs.get(i).get("value"));



参考技术A 没看明白要问的什么!追问

就是说我文本里有几条信息,每条信息中含有“xxxx-xx-xx”这样的日期格式,我想用Java的模式匹配将其识别出来,再按日期的从早到晚对信息进行排序。

追答

正则表达式吧 自己百度搜一下java模式匹配,然后看看正则表达式规则,你可以的!

追问

嗯,是用正则表达式做。主要在日期格式前面还有一串数字代表别的信息,否则我就可以直接将其匹配成数字进行排序了,我再试试吧,谢谢哈

sql 从2个不同的表中选择唯一的电子邮件,并按日期排序。

SELECT * FROM
(SELECT 
	CONCAT_WS(" ", C.NAME, C.SURNAME) AS 'Person Name',
	C.EMAIL AS 'Email Address',
	B.DATE AS 'Date they Subscribed'
	FROM CUSTOMERS C LEFT JOIN BOOKINGS B ON (C.CUS_ID=B.CUSTOMERS_ID) 
	WHERE C.MAIL_LIST_YN = 'Y' AND B.DATE>='2016-09-01' AND B.DATE<='2017-03-01'
	GROUP BY C.EMAIL
UNION
SELECT 
	N.NAME AS 'Person Name',
	N.EMAIL AS 'Email Address',
	N.DATE AS 'Date they Subscribed'
	FROM FORM_NEWSLETTER N 
	WHERE N.DATE>='2016-09-01' AND N.DATE<='2017-03-01'
	GROUP BY N.EMAIL
)
AS results
ORDER BY results.`Date they Subscribed` ASC

以上是关于怎么从文本中匹配日期格式并按此排序(Java)的主要内容,如果未能解决你的问题,请参考以下文章

从照片库加载图像并按日期排序的内存问题

sql 从2个不同的表中选择唯一的电子邮件,并按日期排序。

显示具有自定义日期元值的wordpress帖子,按此日期排序,

核心数据按年份分组并按日期排序

显示具有自定义日期元值的wordpress文章,按此日期排序,并具有定义的分类法

JAVA 日期排序