曾经跳过的坑------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 $? 显示 ...
随机推荐
- 用VMware 8安装Ubuntu 12.04具体过程(图解)
图解演示环境版本号: 本机系统: WIN7 虚拟机:VMware Workstation 8 (英文版) 安装目标:Ubuntu Desktop 12.04 LTS (请点击这里)先下载好iso镜像 ...
- leetcode第一刷_Balanced Binary Tree
二叉平衡树好火啊.差点儿每一个公司的笔试题里都有它.考了好多次我都不会,挂笔试非常有可能就是由于它.另一个它的同伙叫二叉搜索树,貌似人气比它还要高一些. 二叉平衡树是什么样的树呢.是每一个节点的左右子 ...
- 使用pycharm手动搭建python语言django开发环境 - 使用git管理代码(二)
在pycharm中打开项目,使用File->Version Control->Git.选中git的安装路径并点击确认. 2)在Version Control界面中,配置或新建一个git的主 ...
- JSON串常用函数
1.JSON.parse() parse 用于从一个字符串中解析出json 对象. 例如 var str='{"name":"cpf","age&qu ...
- cf #363 d
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output stan ...
- 深入理解yum工作原理
前言 在前面一篇rpm包制作描述了rpm的打包过程,这篇文章主要讲述yum的工作原理. yum 运行原理 yum的工作需要两部分来合作,一部分是yum服务器,还有就是client的yum工具.下面分别 ...
- Cmder 配置使用
官网下载 配置: 1.把 Cmder 加到环境变量 将Cmder.exe存放的目录添加到系统环境变量path 添加成功后,Win+r 输入cmder,可以正确打开cmder 窗口即可. 2.添加 cm ...
- Spring MVC生成PDF文件
以下示例演示如何使用Spring Web MVC框架生成PDF格式的文件.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的alsa音频pcm g711 和aac 音频格式
(1)alsa pcm (2)g711 (3)aac (4) --------------author:pkf -------------------time:2-4 ---------------- ...
- C/C++程序开发中实现信息隐藏的三种类型
不管是模块化设计,还是面向对象设计.还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏依照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 ...