曾经跳过的坑------replace、替换斜杠反斜杠、时间格式化处理
JAVA 中:
坑一:
replace没有用对象进行接收。直接使用
dateStr.replaceAll("\\/", "-");
是不行的,至少得加上 "dateStr = " 。
坑二:
正则匹配斜杠
\\d{4}\\\\\\d{1,2}\\\\\\d{1,2} 2016\05\05
中间得加6个斜杠转义。自行体会吧,都是泪啊,太隐蔽了……
坑三:
测试的时候没有转义斜杠
dealVenueDate("2016\\06\\07"),defaultDatePattern
基本的坑,没留意掉进去了
坑四:
正则匹配中文,要使用Unicode。不烦述。
public static String defaultDatePattern = "yyyy-MM-dd";
public Date dealVenueDate(String dateStr){
Date date = null;
String temp = "";
if(StringUtils.isBlank(dateStr)){
return date;
}
String format = "\\d{4}-\\d{2}-\\d{2}|\\d{4}\\/\\d{1,2}\\/\\d{1,2}|\\d{4}\\\\\\d{1,2}\\\\\\d{1,2}";// 2016-05-05 2016/05/05
Pattern pattern = Pattern.compile(format);
Matcher matcher = pattern.matcher(dateStr);
String format1 = "\\d{1,2}\\/\\d{1,2}\\/\\d{2}";// 5/5/16 05/05/16
Pattern pattern1 = Pattern.compile(format1);
Matcher matcher1 = pattern1.matcher(dateStr);
// String format2 = "\\d{1,2}\\[月]\\d{1,2}\\[日]";// 5月5日
// Pattern pattern2 = Pattern.compile(format2);
// Matcher matcher2 = pattern2.matcher(dateStr);
try {
if(matcher.matches()){
if(dateStr.contains("\\")){
dateStr = dateStr.replaceAll("\\\\", "-");
}
if(dateStr.contains("/")){
dateStr = dateStr.replaceAll("\\/", "-");
}
date = parse(dateStr,defaultDatePattern);
}else if(matcher1.matches()){
temp = dateStr.substring(dateStr.length()-2,dateStr.length());
String midTemp = dateStr.substring(0,dateStr.length()-3);
midTemp = midTemp.replaceAll("\\/", "-");
temp = "20" + temp + "-" + midTemp;
date = parse(temp,defaultDatePattern);
}else if(dateStr.indexOf("月") > 0 && dateStr.indexOf("日") > 0){//5月5日
temp = dateStr.substring(0,dateStr.indexOf("日"));
String[] data = temp.split("月");
if(data != null && data.length == 2){
Calendar cal = Calendar.getInstance();
String year = cal.get(Calendar.YEAR) + "";
temp = year + "-" + data[0] + "-" + data[1];
date = parse(temp,defaultDatePattern);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return date ;
}
public static Date parse(String strDate, String pattern) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat(pattern);
return df.parse(strDate);
}
public static String format(Date date, String pattern) {
String returnValue = "";
if (date != null) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
returnValue = df.format(date);
}
return returnValue;
}
public static void main(String[] args) {
// SimpleDateFormat df = new SimpleDateFormat(defaultDatePattern);
// try {
// System.out.println("=========aaaaaa========"+df.parse("2016\\06\\07"));
// } catch (ParseException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// System.out.println("=========aaaaaa========"+format(dealVenueDate("2016\\06\\07"),defaultDatePattern));
// System.out.println("=========aaaaaa========"+format(dealVenueDate("2016/06/07"),defaultDatePattern));
// System.out.println("=========aaaaaa========"+format(dealVenueDate("6/7/16"),defaultDatePattern));
// System.out.println("=========aaaaaa========"+format(dealVenueDate("5月10日"),defaultDatePattern));
}
曾经跳过的坑------replace、替换斜杠反斜杠、时间格式化处理的更多相关文章
- 斜杠反斜杠,去空格\xa0,连接函数join()
1斜杠反斜杠 斜杠:/.反斜杠:\. 反斜杠\,在windows系统中用来表示目录. 而在unix系统中,/表示目录.由于web遵循unix命名,所以在网址(URL)中,/表示目录. 在unix系统中 ...
- 加特殊符号星号斜杠反斜杠/* \ */ !important等让css实现兼容各个浏览器的技巧的代码
在编写css样式表的时候常常会碰到一写浏览器兼容的问题,象是不同内核的浏览器显示就不一定相同,不同版本的的浏览器也会产生上下兼容的问题,如何解决这些问题成了我们苦恼的问题,如果你对css hac ...
- Linux/Window 正斜杠 反斜杠
文件目录结构: Linux 是用正斜杠 目录名区分大小写 Window 是用反斜杠 目录名不区分大小写
- Sed替换 内容带反斜杠(/)
sed "s#XXXX#${NAME}#" $MAIL_CONTENT > /tmp/MAIL_CONTENT1.tmp -----不论什么字符,紧跟着s命令的都被认为是新的 ...
- js替换字符中的斜杠反斜杠
var reg=/\\|\//g; var a="a\a\\a/b" alert(a.replace(reg,"-"));
- Unix Shell中单引号、双引号字符、反斜杠、反引号的使用[转]
在执行shell脚本的时候,shell将会对脚本中的行进行解释,然后执行:对于一些特殊处理的句子,我们可以使用引号或者反斜线来避免shell解释执行之.如下,当在命令行中输入:echo *child. ...
- 每日linux命令学习-引用符号(反斜杠\,单引号'',双引号"")
引用符号在解析器中保护特殊元字符和参数扩展,其使用方法有3种:反斜杠(\),单引号(’‘),双引号(“”). 单引号和双引号必须匹配使用,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要 ...
- shell脚本特殊符号——单引号、双引号、反引号、反斜杠
1. 单引号 ( '' ) 被单引号用括住的内容,将被视为单一字串. 2. 双引号 ( " " ) 被双引号用括住的内容,将被视为单一字串.双引号只要求忽略大多数,具体说,括在双 ...
- Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍
Shell中的特殊字符有 1.$ 美元符 2.\ 反斜杠 3.` 反引号 4." 双引号 5.< ,>;,*,?,[,] 下面我一一举列说明 一.$符号 1.echo $? 显示 ...
随机推荐
- Redis_发布订阅(基础)
目录 前言 生产者和消费者 发布和订阅 Java实现 注意 前言 随着业务复杂, 业务的项目依赖关系增强, 使用消息队列帮助系统降低耦合度.发布订阅(pub/sub)是一种消息通信模式,主要目的是解除 ...
- 深入剖析tomcat的类加载机制
1JVM类加载机制 JVM的ClassLoader通过Parent属性定义父子关系,可以形成树状结构.其中引导类.扩展类.系统类三个加载器是JVM内置的. 它们的作用分别是: 1)引导类加载器:使用n ...
- python-class(5)
#!/usr/bin/env python #-*- coding:utf-8 -*- ############################ #File Name: class5.py #Auth ...
- Linux学习之inode说明
硬盘是常见的存储设备,最小单位叫做扇区,大小512kb. 文件存储在硬盘中,文件存储最小单位叫做块,大小通常为4k. iNode用于存放文件的元信息,元信息如下: 所有者 所有组 权限 时间戳,cti ...
- 返回当前文档的文档的url
HTML DOM referrer 属性 HTML DOM Document 对象 定义和用法 referrer 属性可返回载入当前文档的文档的 URL. 语法 document.referrer 说 ...
- 分分钟学会一门语言之Python篇
转自:http://www.code123.cc/1049.html Python 是 90 年代初由 Guido Van Rossum 创立的.它是当前最流行的程序语言之一.它那纯净的语法令我一见倾 ...
- ../lib//libscsdblog.so: undefined reference to `pthread_atfork'
代码中遇到这个问题,但是在makefile中已经添加了-lpthread. 最后发现问题时,引入库的顺序,把-lpthread放在最后就可以了.
- c++ why can't class template hide its implementation in cpp file?
类似的问题还有: why can't class template use Handle Class Pattern to hide its implementation? || why there ...
- mock带参数的构造函数
@RunWith(PowerMockRunner.class)@PrepareForTest(Helper.class)//1.添加要初始化的类,就是构造函数所在的类public class Help ...
- Unity3d中使用自带动画系统制作下雨效果(一)
之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪. 步 ...