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

文章目录

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

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://www.uudwc.com/A/3wj2R/

  • 替换:456
  • 只替换第一个/最后一个:456

原文地址:https://blog.csdn.net/qq_34168515/article/details/133181752

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月26日 18:32
31.链表练习题(2)(王道2023数据结构2.3.7节16-25题)
下一篇 2023年09月26日 19:32