java如何从不规则的字符串中截取出⽇期
⽬录
从不规则的字符串中截取出⽇期
代码
没有升级的输出结果
将yyyy/MM/dd形式的不规则⽇期转换成规则形式
代码如下
从不规则的字符串中截取出⽇期
最近在项⽬中需要远程调接⼝,从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 = place(",", "").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 = place(",", "").trim();
}
return trim;
}).findFirst().orElse(null);
String b = placeAll("[年,⽉]", "-");
// ⾄为空相关处理 -- 三⽬运算符 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 = Instance();
c1.set(Integer.parseInt(date[0]), Integer.parseInt(date[1]) - 1, Integer.parseInt(date[2]));
怎么截取列表中的字符串SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
return sdf.Time());
}
return null;
}
\\d{4}\\/\\d{1,2}\\/\\d{1,2}:在java中\\ 表⽰⼀个正则表达式的反斜杠,\\/表⽰斜杠的转义,\\\\表⽰⼀个普通的反斜杠。以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。