您好我有以下日期字符串格式:
六月-2008
七月-2008
03 - 2010
我可以查询什么是java正则表达式,将每个月和年的值提取到单独的字符串中。这里的分隔符是“ - ”符号
“ - ”符号从开头到结尾的任何值都是月份,“ - ”符号后面的任何值都是年份值。
以下是我想要实现的目标
String m = March
String y = 2010
感谢大家的帮助!
答案 0 :(得分:6)
不要使用正则表达式。使用String#split()
:
String[] parts = "June-2008".split("-", 2); // or .split("-")
String m = parts[0]; // "June"
String y = parts[1]; // "2008"
更好的是,使用SimpleDateFormat
,您将有一个合适的Date
可以使用:
DateFormat df = new SimpleDateFormat("M-y");
Date myDate = df.parse("June-2008");
答案 1 :(得分:0)
我想扩展Matt Ball给出的答案。如果您要拆分该字符串并愿意使用String#split()
之外的其他字符,则可以使用StringUtils的Apache Commons Lang。它有各种String实用程序方法。
一个例子:
String strDate = "June-2008";
String[] parts = StringUtils.split(strDate, '-');
String month = parts[0]; // "June"
String year = parts[1]; // 2008
此外,如果您想获得java.util.Date
个对象,那么Joda Time可能会对您有所帮助。我个人更喜欢这个api而不是java.util.Date
,因为它更丰富,更易于使用,更少错误。
现在我们可以将String操作为:
String strDate = "June-2008";
DateTimeFormatter formatter = DateTimeFormat.forPattern("MMMM-yyyy");
DateTime dateTime = formatter.parseDateTime(strDate); // parse it
Date javaDate = dateTime.toDate(); // a java.util.Date object
int year = dateTime.getYear(); // 2008
String month = dateTime.month().getAsText(); // June
希望这会对你有所帮助。感谢。