• org.apache.commons.lang3.StringUtils工具类使用大全


    在这里插入图片描述

    前言

    大家好,我是爷爷的茶七里香,最近整理了一份apache下的StringUtils工具类的使用,有不对的地方还请明确指出,万分感谢!

    正文(官网文档

    序号方法解释例子
    1isEmpty/isBlank检查字符串是否为空查看
    2trim/strip去除字符串前后的空格查看
    3equals/compare比较两个字符串是否相等查看
    4startsWith检查字符串是否以指定字符开头查看
    5endsWith检查字符串是否以指定字符结尾查看
    6indexOf/lastIndexOf/contains判断是否包含指定字符查看
    7indexOfAny/lastIndexOfAny/indexOfAnyBut任意一组字符串的索引查看
    8containsOnly/containsNone/containsAny字符串是否仅包含/无/这些字符中的任何一个查看
    9substring/left/right/mid根据索引对字符串的提取查看
    10substringBefore/substringAfter/substringBetween提取指定字符前/后/中的字符查看
    11split/join将字符串拆分为字符串数组,反之拼接查看
    12remove/deleteWhitespace字符串的删除操作查看
    13replace/overlay搜索字符串,然后用另一个字符串替换查看
    14chop删除字符串的最后一部分查看
    15appendIfMissing如果不存在后缀,则在字符串的末尾附加一个后缀查看
    16prependIfMissing如果不存在前缀,则在字符串的开头添加前缀查看
    17leftPad/rightPad/center/repeat填充字符串查看
    18upperCase/lowerCase/swapCase/capitalize/uncapitalize更改字符串的大小写查看
    19countMatches计算指定字符在另一个字符串中出现的次数查看
    20isAlpha/isNumeric/isWhitespace/isAsciiPrintable检查字符串中的字符查看
    21defaultString防止输入字符串为空查看
    22rotate旋转(循环移位)字符串查看
    23reverse/reverseDelimited反转字符串查看
    24abbreviate字符串多余的省略号显示查看
    25difference比较字符串差异查看

    在这里插入图片描述

    isEmpty/isBlank【判断是否为空】
    // null的情况
    String str1 = null;
    System.out.println("str2 isEmpty->"+StringUtils.isEmpty(str1));
    System.out.println("str2 isBlank->"+StringUtils.isBlank(str1));
    
    // 不是空格的情况
    String str2 = "";
    System.out.println("str1 isEmpty->"+StringUtils.isEmpty(str2));
    System.out.println("str1 isBlank->"+StringUtils.isBlank(str2));
    
    // 空格的情况
    String str3 = " ";
    System.out.println("str2 isEmpty->"+StringUtils.isEmpty(str3));
    System.out.println("str2 isBlank->"+StringUtils.isBlank(str3));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    输出结果:

    str1 isEmpty->true
    str1 isBlank->true
    str2 isEmpty->true
    str2 isBlank->true
    str3 isEmpty->false
    str3 isBlank->true

    区别:

    • isEmpty方法判断空格的时候,认为这是不属于空值的!

    在这里插入图片描述

    trim/strip【去除字符串前后的空格】
    // trim
    String str1 = " abc ";
    System.out.println("使用trim去除前"+str1+"使用trim去除前");
    System.out.println("使用trim去除后"+StringUtils.trim(str1)+"使用trim去除后");
    
    // strip
    String str2 = " efg ";
    System.out.println("使用strip去除前"+str2+"使用strip去除前");
    System.out.println("使用strip去除后"+StringUtils.strip(str2)+"使用strip去除后");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出结果:

    使用trim去除前 abc 使用trim去除前
    使用trim去除后abc使用trim去除后
    使用strip去除前 efg 使用strip去除前
    使用strip去除后efg使用strip去除后

    区别:

    • trim可以去除半角的空格;
    • strip既可以去除半角空格也可以去除全角空格;

    在这里插入图片描述

    equals/compare【判断两个字符串是否相等】
    String str1 = "abc";
    String str2 = "abc";
    System.out.println("两个字符串相同的情况:"+StringUtils.equals(str1,str2));
    System.out.println("两个字符串相同的情况:"+StringUtils.compare(str1,str2));
    
    String str3 = "abc";
    String str4 = "cde";
    System.out.println("两个字符串不同的情况:"+StringUtils.equals(str3,str4));
    System.out.println("两个字符串不同的情况:"+StringUtils.compare(str3,str4));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出结果:

    两个字符串相同的情况:true
    两个字符串相同的情况:0
    两个字符串不同的情况:false
    两个字符串不同的情况:-2

    区别:

    • compare比较两个字符串相同的时候为0;
    • equals返回的是boolean类型;

    在这里插入图片描述

    startsWith【检查字符串是否以指定字符开头】
    String str1 = "abc";
    System.out.println("是否以s开头:"+StringUtils.startsWith(str1, "s"));
    System.out.println("是否以a开头:"+StringUtils.startsWith(str1, "a"));
    
    • 1
    • 2
    • 3

    输出结果:

    是否以s开头:false
    是否以a开头:true

    在这里插入图片描述

    endsWith【检查字符串是否以指定字符结尾】
    String str1 = "abc";
    System.out.println("是否以s结尾:"+StringUtils.endsWith(str1, "s"));
    System.out.println("是否以c结尾:"+StringUtils.endsWith(str1, "c"));
    
    • 1
    • 2
    • 3

    输出结果:

    是否以s结尾:false
    是否以c结尾:true

    在这里插入图片描述

    indexOf/lastIndexOf/contains【判断是否包含指定字符】
    String str1 = "abc";
    System.out.println("从左到右查找:"+StringUtils.indexOf(str1, "a"));
    System.out.println("从右到左查找:"+StringUtils.lastIndexOf(str1, "b"));
    System.out.println("是否包含指定字符:"+StringUtils.contains(str1, "c"));
    
    • 1
    • 2
    • 3
    • 4

    输出结果:

    从左到右查找:0
    从右到左查找:1
    是否包含指定字符:true

    区别:

    • indexOf是从左到右查找;
    • lastIndexOf是从右到左查找;
    • 以上两者都是找到指定字符就会返回该字符的下标,找不到就返回-1;
    • contains是查找是否包含指定字符返回boolean类型;

    在这里插入图片描述

    indexOfAny/lastIndexOfAny/indexOfAnyBut【任意一组字符串的索引】
    String str1 = "aabcabbb";
    System.out.println("最早出现字符a的下标:"+StringUtils.indexOfAny(str1, "a"));
    System.out.println("最晚出现字符a的下标:"+StringUtils.lastIndexOfAny(str1, "a"));
    System.out.println("以a开头的次数:"+StringUtils.indexOfAnyBut(str1, "a"));
    
    • 1
    • 2
    • 3
    • 4
    • 输出结果:

    最早出现字符a的下标:0
    最晚出现字符a的下标:4
    以a开头的次数:2

    区别:

    • indexOfAny是最早出现指定字符的下标;
    • lastIndexOfAny则是最晚出现指定字符的下标;
    • indexOfAnyBut是以指定字符开头的次数;

    在这里插入图片描述

    containsOnly/containsNone/containsAny【字符串是否仅包含/无/这些字符中的任何一个】
    String str1 = "aabcabbb";
    System.out.println("aabcabbb是否仅包含a字符:"+StringUtils.containsOnly(str1, "a"));
    System.out.println("aabcabbb是否没有a字符:"+StringUtils.containsNone(str1, "a"));
    System.out.println("aabcabbb是否存在a字符:"+StringUtils.containsAny(str1, "a"));
    
    • 1
    • 2
    • 3
    • 4

    输出结果:

    aabcabbb是否仅包含a字符:false
    aabcabbb是否没有a字符:false
    aabcabbb是否存在a字符:true

    区别:

    • containsOnly的意思是判断是不是只有指定的字符;
    • containsNone的意思是判断没有指定的字符,如果没有指定字符的话为true,反之为false;
    • containsAny的意思是判断是否存在指定的字符;

    在这里插入图片描述

    substring/left/right/mid【指定索引/长度提取字符】
    String str1 = "abcdefg";
    System.out.println("从下标1开始提取字符:"+StringUtils.substring(str1, 1));
    System.out.println("从左到右提取长度为1的字符:"+StringUtils.left(str1, 1));
    System.out.println("从右到左提取长度1的字符:"+StringUtils.right(str1, 1));
    System.out.println("提取指定下标到指定长度的字符:"+StringUtils.mid(str1, 1, 3));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出结果:

    从下标1开始提取字符:bcdefg
    从左到右提取长度为1的字符:a
    从右到左提取长度1的字符:g
    提取指定下标到指定长度的字符:bcd

    区别:

    • substring是从指定的下标位置开始提取字符;
    • left是从左边开始提取指定长度的字符;
    • right是从右边开始提取指定长度的字符;
    • mid是提取指定下标到指定长度的字符,例子中我指定了从下标1开始提取到长度为3的字符,例子中提取出来的是bcd;

    在这里插入图片描述

    substringBefore/substringAfter/substringBetween【提取指定字符前/后/中的字符】
    String str1 = "abcdefg";
    System.out.println("提取字符d之前的字符(不包含d):"+StringUtils.substringBefore(str1, "d"));
    System.out.println("提取字符d之后的字符(不包含d):"+StringUtils.substringAfter(str1, "d"));
    System.out.println("提取a到d之间的字符:"+StringUtils.substringBetween(str1, "a","d"));
    
    • 1
    • 2
    • 3
    • 4

    输出结果:

    提取字符d之前的字符(不包含d):abc
    提取字符d之后的字符(不包含d):efg
    提取a到d之间的字符:bc

    区别:

    • substringBefore提取指定字符前的字符串,不包含指定的字符;
    • substringAfter提取指定字符后的字符串,不包含指定的字符;
    • substringBetween提取指定两个字符之间的字符,不包含指定的字符;

    在这里插入图片描述

    split/join【将字符串拆分为字符串数组,反之拼接】
    List<String> str1 = Arrays.asList("a", "b", "c");
    String join = StringUtils.join(str1, "/");
    System.out.println("使用join指定斜杠拼接后的字符串:"+ join);
    String[] split = StringUtils.split(join, "/");
    System.out.println("使用split指定斜杠拆分后的字符串数组:"+ Arrays.toString(split));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出结果:

    使用join指定斜杠拼接后的字符串:a/b/c
    使用split指定斜杠拆分后的字符串数组:[a, b, c]

    区别:

    • join可以把数组或者是集合用指定的字符去进行拼接,这个方法在项目中很常用;
    • split可以把字符串以指定字符去进行拆分,返回的结果是一个字符串数组;

    在这里插入图片描述

    remove/deleteWhitespace【字符串的删除操作】
    String str1 = "abc";
    System.out.println("删除字符串中的b字符:"+StringUtils.remove(str1, "b"));
    System.out.println("除了b字符以外的都删除:"+StringUtils.deleteWhitespace("b"));
    
    • 1
    • 2
    • 3

    输出结果:

    删除字符串中的b字符:ac
    除了b字符以外的都删除:b

    在这里插入图片描述

    replace/overlay【搜索字符串,然后用另一个字符串替换】
    String str1 = "aabc";
    
    System.out.println("把b字符替换成中文二字:"+StringUtils.replace(str1, "b","中文"));
    
    System.out.println("从下标0开始到下标1(不包含下标1),覆盖成b字符:"+StringUtils.overlay(str1,"b",0,1));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出结果:

    把b字符替换成中文二字:aa中文c
    从下标0开始到下标1(不包含下标1),覆盖成b字符:babc

    在这里插入图片描述

    chop【删除字符串的最后一部分】
    String str1 = "aabc";
    System.out.println("删除最后一个字符:"+StringUtils.chop(str1));
    
    • 1
    • 2

    输出结果:

    删除最后一个字符:aab

    在这里插入图片描述

    appendIfMissing【如果不存在后缀,则在字符串的末尾附加一个后缀】
    String str1 = "aabc";
    System.out.println("添加jpg后缀:"+StringUtils.appendIfMissing(str1,".jpg"));
    
    • 1
    • 2

    输出结果:

    添加jpg后缀:aabc.jpg

    注意:当末尾不存在指定后缀才会进行添加,可以指定多个!

    在这里插入图片描述

    prependIfMissing【如果不存在前缀,则在字符串的开头添加前缀】
    String str1 = "aabc";
    System.out.println("添加前缀:"+StringUtils.prependIfMissing(str1,"http://"));
    
    • 1
    • 2

    输出结果:

    添加前缀:http://aabc

    注意:当开头不存在指定后缀才会进行添加,可以指定多个!

    在这里插入图片描述

    leftPad/rightPad/center/repeat【填充字符串】
    String str1 = "aabc";
    
    System.out.println("超过字符串长度的使用空格在开头填充:"+StringUtils.leftPad(str1,6)+"测试末尾有没有空格");
    
    System.out.println("超过字符串长度的使用空格在末尾填充:"+StringUtils.rightPad(str1,6)+"测试末尾有没有空格");
    
    System.out.println("超过字符串长度的使用空格在两侧填充:"+StringUtils.center(str1,6)+"测试末尾有没有空格");
    
    System.out.println("aabc被指定填充两次:"+StringUtils.repeat(str1,2)+"测试末尾有没有空格");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出结果:

    超过字符串长度的使用空格在开头填充: aabc测试末尾有没有空格
    超过字符串长度的使用空格在末尾填充:aabc 测试末尾有没有空格
    超过字符串长度的使用空格在两侧填充: aabc 测试末尾有没有空格
    aabc被指定填充两次:aabcaabc测试末尾有没有空格

    区别:

    • leftPad是在左侧使用空格填充,注意看例子中aabc的长度为4,但是我指定长度为6,多出来两个长度使用空格进行了填充;
    • rightPad在右侧进行的空格填充;
    • center在两侧进行的填充,保证字符在中间;
    • 在例子中的repeat无非就是复制了两次aabc,如果指定3次,那么就复制三次

    在这里插入图片描述

    upperCase/lowerCase/swapCase/capitalize/uncapitalize【更改字符串的大小写】
    String str1 = "aabCc";
    System.out.println("将字符串都转换成大写:"+StringUtils.upperCase(str1));
    System.out.println("将字符串都转换成小写:"+StringUtils.lowerCase(str1));
    System.out.println("大写的都转成小写,反之小写转大写:"+StringUtils.swapCase(str1));
    System.out.println("首字母转大写:"+StringUtils.capitalize(str1));
    System.out.println("首字母转小写:"+StringUtils.uncapitalize(str1));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    输出结果:

    将字符串都转换成大写:AABCC
    将字符串都转换成小写:aabcc
    大写的都转成小写,反之小写转大写:AABcC
    首字母转大写:AabCc
    首字母转小写:aabCc

    在这里插入图片描述

    countMatches【计算指定字符在另一个字符串中出现的次数】
    String str1 = "aabCc";
    System.out.println("出现a的次数:"+StringUtils.countMatches(str1,"a"));
    
    • 1
    • 2

    输出结果:

    出现a的次数:2

    在这里插入图片描述

    isAlpha/isNumeric/isWhitespace/isAsciiPrintable【检查字符串中的字符】
    String str1 = "!aabCc123";
    System.out.println("字符串是否都是字母:"+StringUtils.isAlpha(str1));
    System.out.println("字符串是否都是数字:"+StringUtils.isNumeric(str1));
    System.out.println("字符串是否是空格:"+StringUtils.isWhitespace(str1));
    System.out.println("字符串是否是Ascii:"+StringUtils.isAsciiPrintable(str1));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出结果:

    字符串是否都是字母:false
    字符串是否都是数字:false
    字符串是否是空格:false
    字符串是否是Ascii:true

    在这里插入图片描述

    defaultString【防止输入字符串为空】
    String str1 = null;
    System.out.println("为null则设置指定的默认值:"+StringUtils.defaultString(str1,"a"));
    
    • 1
    • 2

    输出结果:

    为null则设置指定的默认值:a

    在这里插入图片描述

    rotate【旋转(循环移位)字符串】
    String str1 = "abc";
    System.out.println("原值:"+str1);
    System.out.println("取末尾的两个字符进行旋转换位:"+StringUtils.rotate(str1,2));
    
    • 1
    • 2
    • 3

    输出结果:

    原值:abc
    取末尾的两个字符进行旋转换位:bca

    在这里插入图片描述

    reverse/reverseDelimited【反转字符串】
    String str = "abcdefg";
    System.out.println("原值:" + str);
    System.out.println("反转后的值:" + StringUtils.reverse(str));
    System.out.println("根据指定字符反转:" + StringUtils.reverseDelimited(str, 'c'));
    
    • 1
    • 2
    • 3
    • 4

    输出结果:

    原值:abcdefg
    反转后的值:gfedcba
    根据指定字符反转:defgcab

    在这里插入图片描述

    abbreviate【字符串多余的省略号显示】
    String str = "abcdefg";
    System.out.println("原值:" + str);
    System.out.println("缩写省略后面的值:" + StringUtils.abbreviate(str, 4));
    
    • 1
    • 2
    • 3

    输出结果:

    原值:abcdefg
    缩写省略后面的值:a…

    注意:缩写指定长度必须是大于等于4!!!
    在这里插入图片描述

    difference【比较字符串差异】
    String str1 = "abcd";
    String str2 = "atcd";
    System.out.println("差异值:" + StringUtils.difference(str1, str2));
    
    • 1
    • 2
    • 3

    输出结果:

    差异值:tcd

    注意:这个比较差异跟我们所认为的不一样,起初我以为它是将两个字符串从第一个字符开始比较,然后将不一致的字符输出出来,但是使用后发现不是这样,它的确是从第一个字符开始比较,但是当遇到不一样的字符时,它就直接将后面的字符串直接输出了!!!

    🥇原创不易,还希望各位大佬支持一下!
    👍点赞,你的认可是我创作的动力 !
    🌟收藏,你的青睐是我努力的方向!
    ✏️评论,你的意见是我进步的财富!

  • 相关阅读:
    有关供应链大赛的一些习得的经验和感受
    IEC103设备数据 转 IEC61850项目案例
    SQL Server教程 - SQL SERVER 分区(PARTITION)
    GB/T 11945-2019 蒸压灰砂实心砖和实心砌块检测
    正则表达式
    JVM区域划分
    typora的主题文件相关(与图片显示有关)
    408王道操作系统强化——概述
    CV计算机视觉每日开源代码Paper with code速览-2023.10.13
    二叉搜索树相关题目总结(一) 力扣 Python
  • 原文地址:https://blog.csdn.net/qq_38238956/article/details/125419338