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


    1、截取

    String a = “123456789ABCDFG”;

    1.1 案例按 * 拆分

    • 保留第一个*之前
    StringUtils.substringBefore(a,"*");
    ==>123
    
    • 1
    • 2

    ps:Before是指取前,第一个出现的符号

    • 保留第一个*之后
    StringUtils.substringAfter(a,"*");
    ==>*456*789*ABC*DFG
    
    • 1
    • 2

    ps:After是指取后,第一个出现的符号

    • 保留最后一个*之后
    StringUtils.substringAfterLast(a,"*");
    ==>DFG
    
    • 1
    • 2

    ps:After是指取后,Last是指最后一个符号

    • 保留最后一个*之前
    StringUtils.substringBeforeLast(a,"*");
    ==>123*456*789*ABC
    
    • 1
    • 2

    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";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 按照 ,拼接,同时 前后加上括号 ()
    String a = "hello";
    String b = "world";
    StringJoiner stringJoiner = new StringJoiner(",","(",")");
    stringJoiner.add(a);
    stringJoiner.add(b);
    ==>
    "(hello,world)";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • List 转字符串拼接,用,隔开
    List<String> list = Arrays.asList("张三", "李四", "王五", "赵六");
    String join = StringUtils.join(list, ",");
    ==>
    张三,李四,王五,赵六
    
    • 1
    • 2
    • 3
    • 4

    3、数字的位数对齐

    • 4位
    String a = "2";
    String b = "312";
    String.format("%04d",Interger.parseInt(a));
    String.format("%04d",Interger.parseInt(b));
    ==>
    "0002";
    "0312";
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    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实现的
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    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 用起来舒服
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    8、字符串替换

    String a = “123456789456DFG”;

    • 替换:456
    • 只替换第一个/最后一个:456
  • 相关阅读:
    仿东郊到家app系统及功能介绍
    使用scp在多个linux系统间进行文件拷贝
    你和我的匆匆四年
    Linux常用命令及项目部署
    银河麒麟V10系统下软RAID调试,使用两个磁盘组raid0
    springboot项目常用的初始化方式,看看你知道几个?
    【Spring框架】——2. Spring IOC
    python LeetCode 刷题记录 14
    java-php-python-家庭记账系统计算机毕业设计
    CancerGPT:使用大型预训练语言模型进行少样本药物配对协同作用预测
  • 原文地址:https://blog.csdn.net/qq_34168515/article/details/133181752