文章目录
- 1、截取
- 1.1 案例按 * 拆分
- 2、拼接
- 2.1 采用 StringJoiner
- 3、数字的位数对齐
- 4、字符串日期处理
- 4.1 格式转换,使用hutool
- 5、判断某个字符(串)存在某个字符串中
- 6、String[] 转 List
- 7、日期对比
- 8、字符串替换
1、截取
String a = “123456789ABCDFG”;
1.1 案例按 * 拆分
- 保留第一个*之前
StringUtils.substringBefore(a,"*");
==>123
ps:Before是指取前,第一个出现的符号
- 保留第一个*之后
StringUtils.substringAfter(a,"*");
==>*456*789*ABC*DFG
ps:After是指取后,第一个出现的符号
- 保留最后一个*之后
StringUtils.substringAfterLast(a,"*");
==>DFG
ps:After是指取后,Last是指最后一个符号
- 保留最后一个*之前
StringUtils.substringBeforeLast(a,"*");
==>123*456*789*ABC
ps:After是指取前,Last是指最后一个符号
2、拼接
2.1 采用 StringJoiner
- 按照 , 拼接
String a = "hello";
String b = "world";
StringJoiner stringJoiner = new StringJoiner(",");
stringJoiner.add(a);
stringJoiner.add(b);
==>
"hello,world";
- 按照 ,拼接,同时 前后加上括号 ()
String a = "hello";
String b = "world";
StringJoiner stringJoiner = new StringJoiner(",","(",")");
stringJoiner.add(a);
stringJoiner.add(b);
==>
"(hello,world)";
- List 转字符串拼接,用,隔开
List<String> list = Arrays.asList("张三", "李四", "王五", "赵六");
String join = StringUtils.join(list, ",");
==>
张三,李四,王五,赵六
3、数字的位数对齐
- 4位
String a = "2";
String b = "312";
String.format("%04d",Interger.parseInt(a));
String.format("%04d",Interger.parseInt(b));
==>
"0002";
"0312";
4、字符串日期处理
4.1 格式转换,使用hutool
时间处理用原生的方式进行处理,太过复杂,自己去实现也大可不必,建议使用hutool的工具DateUtil
2023-09-22
1、转Date -> 2023-09-22 00:00:00
2、指定格式yyyy/MM/dd
2023-09-22 23:01:12
1、转Date -> 2023-9-22
- 当前,加一个小时、一天、一周、一个月、一年
2023-09-22 23:01:12 - 当前,减一个小时、一天、一周、一个月、一年
2023-09-22 23:01:12
String dateStr = "2023-09-22";
Date parse = DateUtil.parse(dateStr);
DateUtil.format(parse,"yyyy/MM/dd");
===>
2023-09-22 00:00:00
2023/09/22
String dateStr2 = "2023-09-22 08:30:01";
Date parse2 = DateUtil.parse(dateStr2);
String format2 = DateUtil.formar(parse2,"yyyy-MM-dd");
String format3 = DateUtil.formar(parse2,"yyyy-MM-dd HH:mm:ss");
===>
2023-09-22 08:30:01
2023-09-22
2023-09-22 08:30:01
计算时间:
加一个小时
DateTime offset1 = DateUtil.offset(parse2,DateField.HOUR,1);
DateTime offset2 = DateUtil.offset(parse2,DateField.WEEK_OF_MONTH,1);
DateTime offset3 = DateUtil.offset(parse2,DateField.MONTH,1);
DateTime offset4 = DateUtil.offset(parse2,DateField.YEAR,1);
===>
2023-09-22 09:30:01
2023-09-29 08:30:01
2023-10-22 08:30:01
2024-09-22 08:30:01
5、判断某个字符(串)存在某个字符串中
String a = “123456789ABCDFG”;
- 判断是否有 * 号
a.indexOf(“*”)>-1 - 判断是否有 456
a.indexOf(“456”)>-1
案例:
String b = "hello world";
System.out.println(b.indexOf("word"));
System.out.println(b.contains("word"));
System.out.println(b.indexOf(world));
System.out.println(b.contains("world"));
==>
-1
false
6
true
PS: contains底层也是使用 indexOf实现的
6、String[] 转 List
String a = “123456789ABCDFG”;
String[] split = a.split(“*”);
List list = Arrays.asList(split);
7、日期对比
String date1Str = “2023-09-22 08:30:00”;
String date2Str = “2023-09-22 10:30:00”;
日期对比文章来源:https://uudwc.com/A/3wj2R
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1 = sdf.parse("2023-09-22 08:30:00");
Date date2 = sdf.parse("2023-09-22 10:30:00");
if(date1.compareTo(date2) > 0){
System.out.println("date1 时间在 date2 之后");
}else if(date1.compareTo(date2) < 0){
System.out.println("date1 时间在 date2 之前");
}else if(date1.compareTo(date2) == 0){
System.out.println("date1 时间在 date2 相等");
}
===>
date1 时间在 date2 之前
ps: 原生的写法,需要自己处理try...catch...,还是 hutool 用起来舒服
8、字符串替换
String a = “123456789456DFG”;文章来源地址https://uudwc.com/A/3wj2R
- 替换:456
- 只替换第一个/最后一个:456