Java工具库Guava字符串处理:分割、连接、填充的使用示例
创始人
2024-02-07 04:16:24
0

场景

Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验:

Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验_霸道流氓气质的博客-CSDN博客

在上面入门Guava的使用之后,学习其对字符串处理的相关方法的示例。

连接器Joiner

用分隔符把字符串序列连接起来也可能会遇上不必要的麻烦。如果字符串序列中含有 null,那连接操作会更难。

Fluent 风格的Joiner让连接字符串更简单。

1、skipNulls()方法 忽略 null

        Joiner joiner = Joiner.on("->").skipNulls();String join = joiner.join("北京", "上海", "广州", null, "深圳");System.out.println(join);//北京->上海->广州->深圳

2、useForNull(String)方法可以给定某个字符串来替换 null

        System.out.println(Joiner.on("->").useForNull("未知地点").join("北京", "上海", "广州", null, "深圳"));//北京->上海->广州->未知地点->深圳

3、Joiner 也可以用来连接对象类型,在这种情况下,它会把对象的 toString()值连接起来

        User user = User.builder().name("霸道").age(30).build();User user1 =  User.builder().name("的程序猿").age(40).build();String join1 = Joiner.on("+").join(user, user1);System.out.println(join1);//User{姓名= 霸道,年龄=30}+User{姓名=的程序猿, 年龄= 40}

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主

关注公众号

霸道的程序猿

获取编程相关电子书、教程推送与免费下载。

拆分器Splitter

JDK 内建的字符串拆分工具有一些古怪的特性。比如,String.split 悄悄丢弃了尾部的分隔符。

问题:”,a,,b,”.split(“,”)返回?

        String string = ",a,,b,";String[] split = string.split(",");System.out.println(split.length);//4Arrays.stream(split).forEach(System.out::println);

正确答案是 ””, “a”, “”, “b”。只有尾部的空字符串被忽略了

1、splitter使用令人放心的、直白的流畅 API 模式对这些混乱的特性作了完全的掌控。

        Iterable split1 = Splitter.on(',').trimResults()//移除结果字符串的前导空白和尾部空白.omitEmptyStrings()//从结果中自动忽略空字符串.split(",a,,b,");System.out.println(split1.toString());//[a, b]


上述代码返回 Iterable,其中包含”a”和”b”。Splitter 可以被设置为按照任何模式、字符、字符串或字符匹配器拆分

2、如果想要拆分器返回List,只需要Lists.newArrayList(split1.iterator())

        ArrayList strings = Lists.newArrayList(split1.iterator());strings.stream().forEach(System.out::println);

3、其他方法

        //拆分器工厂//Splitter.on(char)  按单个字符拆分//Splitter.on(CharMatcher) 按字符匹配器拆分//Splitter.on(String) 按字符串拆分//Splitter.onPattern(String) 按正则表达式拆分//Splitter.fixedLength(int) 按固定长度拆分;最后一段可能比给定长度短,但不会为空//拆分器修饰符//omitEmptyStrings()从结果中自动忽略空字符串//trimResults()移除结果字符串的前导空白和尾部空白//trimResults(CharMatcher)给定匹配器,移除结果字符串的前导匹配字符和尾部匹配字符//limit(int)限制拆分出的字符串数量

字符匹配器CharMatcher

1、removeFrom 从字符序列中移除所有匹配字符,比如移除control字符

        String s = CharMatcher.javaIsoControl().removeFrom("a\nbc\n");System.out.println(s);//abc

2、只保留数字字符

        String s1 = CharMatcher.digit().retainFrom("55ddd66gggg");System.out.println(s1);//5566

3、去除两端的空格,并把中间的连续空格替换成指定的字符

        String s2 = CharMatcher.whitespace().trimAndCollapseFrom("  dd   ggg  ", ',');System.out.println(s2);//dd,ggg

4、用指定字符替换所有数字

        String s3 = CharMatcher.javaDigit().replaceFrom("111ddd222ggg", ',');System.out.println(s3);//,,,ddd,,,ggg

5、只保留数字和小写字母

        String s4 = CharMatcher.javaDigit().or(CharMatcher.javaLowerCase()).retainFrom("aaDD11GG");System.out.println(s4);//aa11

6、anyOf枚举匹配字符

        String s6 = CharMatcher.is('a').retainFrom("aaddddgggxccv");System.out.println(s6);//aa

7、is给定单一字符匹配

        String s6 = CharMatcher.is('a').retainFrom("aaddddgggxccv");System.out.println(s6);//aa

8、inRange给定字符范围匹配

        String s7 = CharMatcher.inRange('a', 'h').retainFrom("abcdefghijk");System.out.println(s7);//abcdefgh

9、collapseFrom把每组连续的匹配字符替换成特定字符,比如把字符串中的连续空白字符替换成单个空格

        String s8 = CharMatcher.whitespace().collapseFrom("   aaafd   gdhdh", ' ');System.out.println(s8);// aaafd gdhdh

10、matchesAllOf 测试是否字符序列中的所有字符都匹配

        boolean b = CharMatcher.digit().matchesAllOf("55ddd66gggg");System.out.println(b);//false

11、trimFrom 移除字符序列的前导匹配字符和尾部匹配字符

        String s9 = CharMatcher.javaDigit().trimFrom("44ddd555ggg666");System.out.println(s9);//ddd555ggg

Charsets

Charsets针对所有 Java 平台都要保证支持的六种字符集提供了常量引用。
尝试使用这些常量,而不是通过名称获取字符集实例。

byte[] bytes = "aaaaadg".getBytes(StandardCharsets.UTF_8);

CaseFormat

CaseFormat 被用来方便地在各种 ASCII 大小写规范间转换字符串——比如,编程语言的命名规范

        String badao = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "BADAO");System.out.println(badao);//badao

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...