Java字符串处理案例(截取、拼接、转换)

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”;
日期对比

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”;

  • 替换:456
  • 只替换第一个/最后一个:456
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值