java如何从不规则的字符串中截取出日期
作者:上善若水滴世界 时间:2022-05-28 02:33:58
从不规则的字符串中截取出日期
最近在项目中需要远程调接口,从String字符串中截取出日期,想了好久,最后用java8新特性,解决了,java8,还是比较好用。
代码
获取到的字符串,例如:
焦化化产车间四期出水(测试排口),2019/10/19 10:00:00,pH平均值 超标,值:5.00
炼焦一车间焦炉推焦除尘(测试排口)2019/7/14 14:00:00,二氧化硫折算平均值 超标,值:51.27
…
升级版本的字符串:
某某公司的测试,2018年08月27日03:00,当日NOX小时浓度超标3%以上已达4次。
某某公司测试数据出铁场除尘(钢板),2017年11月18日14:23到2019年11月21日15:13,离线已达90小时"
// 截取时间处理 -- java8
//content是获取的字符串
List<String> lists = Collections.singletonList(content);
String beginDate = lists.stream().map(e -> {
int lastIndexOf = e.lastIndexOf(":00");
int indexOf = e.indexOf(")");
String substring = e.substring(indexOf + 1, lastIndexOf + 3);
String trim = substring.replace(",", "").trim();
return trim;
}).findFirst().orElse(null);
/**
* 升级版本
* 截取时间处理 -- java8
* content是获取的字符串
*/
List<String> lists = Collections.singletonList(content);
String beginDate = lists.stream().map(e -> {
int lastIndexOf;
int indexOf;
String trim;
lastIndexOf = e.lastIndexOf("到");
if (lastIndexOf == -1) {
lastIndexOf = e.lastIndexOf(":00");
if (lastIndexOf == -1) {// 防止不规则的字符串时间报错,至为空
return "";
}
indexOf = e.indexOf(",");
trim = e.substring(indexOf + 1, lastIndexOf + 3);
} else {
indexOf = e.indexOf(",");
String substring = e.substring(indexOf + 1, lastIndexOf);
trim = substring.replace(",", "").trim();
}
return trim;
}).findFirst().orElse(null);
String b = beginDate.replaceAll("[年,月]", "-");
// 至为空相关处理 -- 三目运算符 resultDto是自定义的实体
resultDto.setBeginDate(b.equals("") ? null : b);
注意substring()包左不包右,字符串中的标点为中文,这点需要注意
没有升级的输出结果
将yyyy/MM/dd形式的不规则日期转换成规则形式
例如:
2019/7/2 转换成 2019/07/02
代码如下
public static String toDate(String str) {
String pattern = "\\d{4}\\/\\d{1,2}\\/\\d{1,2}";
if (str != null && Pattern.matches(pattern, str)) {
String[] date = StringUtils.split(str, "\\/");
Calendar c1 = Calendar.getInstance();
c1.set(Integer.parseInt(date[0]), Integer.parseInt(date[1]) - 1, Integer.parseInt(date[2]));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
return sdf.format(c1.getTime());
}
return null;
}
\\d{4}\\/\\d{1,2}\\/\\d{1,2}
:在java中\\ 表示一个正则表达式的反斜杠,\\/表示斜杠的转义,\\\\表示一个普通的反斜杠。
来源:https://blog.csdn.net/qq_39150374/article/details/102717999
标签:java,字符串,截取,日期
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
关于MyBatis中SqlSessionFactory和SqlSession简解
2022-02-18 13:57:37
Spring Boot Admin 进行项目监控管理的方法
2021-09-01 23:39:19
![](https://img.aspxhome.com/file/2023/1/67001_0s.png)
JavaScript 与 Java 区别介绍 学java怎么样
2023-11-25 12:23:49
如何写好一个Spring组件的实现步骤
2023-01-08 20:24:12
![](https://img.aspxhome.com/file/2023/2/75032_0s.jpg)
详解Java如何实现小顶堆和大顶堆
2023-11-10 04:03:05
![](https://img.aspxhome.com/file/2023/9/59179_0s.png)
Java如何实现支付宝电脑支付基于servlet版本
2021-12-11 04:39:47
![](https://img.aspxhome.com/file/2023/7/81237_0s.png)
深入理解C#之继承
2022-02-25 07:25:44
Java利用POI读取、写入Excel的方法指南
2023-11-23 15:39:23
![](https://img.aspxhome.com/file/2023/9/59899_0s.png)
C#使用DoddleReport快速生成报表
2022-05-31 06:39:59
![](https://img.aspxhome.com/file/2023/2/84422_0s.png)
如何优雅的处理Spring Boot异常信息详解
2023-11-29 09:50:02
![](https://img.aspxhome.com/file/2023/6/60536_0s.jpg)
浅谈java项目与javaweb项目导入jar包的区别
2023-11-11 11:06:19
C#开发微信公众号接口开发
2023-10-14 11:49:01
![](https://img.aspxhome.com/file/2023/0/82110_0s.jpg)
合成聚合复用原则_动力节点Java学院整理
2023-06-27 22:05:20
![](https://img.aspxhome.com/file/2023/9/57599_0s.png)
java 配置MyEclipse Maven环境具体实现步骤
2021-07-31 04:12:23
java导出生成word的简单方法
2023-11-23 23:07:13
IntellJ IDEA神器使用技巧(小结)
2023-08-08 22:01:44
SpringBoot整合OpenApi的实践
2023-08-03 11:59:55
![](https://img.aspxhome.com/file/2023/8/70578_0s.jpg)
Java爬取豆瓣电影数据的方法详解
2021-12-12 16:21:06
![](https://img.aspxhome.com/file/2023/1/79871_0s.png)
MyBatis注解实现动态SQL问题
2023-08-19 02:34:09
浅谈Java多进程程序的运行模式
2021-07-06 11:06:49