guava--应用篇(一)字符串操作--splitter,joiner, Strings, Objects

Java工具库Guava字符串处理:分割、连接、填充的使用示例 在上面入门Guava的使用之后,学习其对字符串处理的相关方法的示例。 阅读详情

guava-docs:guavaApi

目录

guava-docs:guavaApi

Splitter: 拆分器

       1.   构建splitter:

       2. splitter 是final修饰的 不可变的

       3. split运用

       4. splitter 添加筛选条件

Joiner: 连接器

  Strings:

Objects:


 

Splitter: 拆分器

       1.   构建splitter:

                  Splitter.on(String str): splitter.on(" ; ")

                   Splitter.onPattern(): 根据正则构建拆分

                   Splitter.fixedLength(int ) : 固定长度

       2. splitter 是final修饰的 不可变的

public final class Splitter extends Object

       3. split运用

     Iterable<String> split1 = splitByComma.split("aa,bb,cc");

      System.out.println(split1); // 【aa,bb,cc】

split 方法返回一个iterable,并且参数不能为null   (Preconditions.checkNotNull(sequence);)

       4. splitter 添加筛选条件

  limit:

//         limit ,拆分到指定的数量后,不再拆分,余下的归为一起
        Iterable<String> split2 = splitByComma.limit(3).split("aa,bb,cc,dd,ee");
        System.out.println(split2);  //[aa, bb, cc,dd,ee] 拆分为三个元素,最后一个是cc,dd,ee
OmitEmptyStrings:
//       omitEmptyStrings 遇到空字符串跳过去
//        splitToList  返回Iterable有时候不好用,可直接返回list
        splitByComma
                .omitEmptyStrings()
                .splitToList("aa,,bb,,cc")
                .stream()
                .forEach(System.out::print); // aa bb cc

trimResults:

//        trimResults: 去除首尾空格, 也可以传入参数CharMatcher指定默认是空格
        splitByComma
//                .trimResults()
                .trimResults(CharMatcher.isNot('a')) // 去除不匹配a的
                .splitToList("   ab , c , d  ,aa  ")
                .stream()
                .forEach(System.out::print);

  charMatcher: 具体参考 https://blog.youkuaiyun.com/victor_cindy1/article/details/52073155

withKeyValueSeparator:

//     切分k-v 形式的,返回一个map
//        按照 逗号拆分字符串,withKeyValueSeparator按照井号拆分k-v
        Map<String, String> splitMap = Splitter.on(",")
                .withKeyValueSeparator("#") // 返回一个MapSplitter,对字符串进行k-v的拆分
                .split("123#123,!1243#ee"); //{123=123, !1243=ee}

//        固定长度拆分
        Splitter splitByfixedLength = Splitter.fixedLength(4);
        List<String> abc = splitByfixedLength.splitToList("aaaabbbbcccc");
        System.out.println(abc);  //[aaaa, bbbb, cccc]

 

Joiner: 连接器

  1. on  构建

      Joiner joiner = Joiner.on("-");

  2. skipNulls 跳过null

     useForNull(string default) 遇到null时 使用默认值

        String join = joiner
                .skipNulls() // 跳过null
//                .useForNull("default") // 遇到null 使用默认值代替,不能和skipNull一起使用
                .join(Lists.newArrayList(1, 2, 3, null, 4, 5, 6)); // 1-2-3-4-5-6

  3. withKeyValueSeparator

//      连接 map中的key value
        String join1 = joiner.withKeyValueSeparator("->")
                .join(ImmutableMap.of("A", "a", "B", "b"));
        System.out.println(join1); //A->a-B->b

  Strings:

 

//        guava中的工具类大量适用  Preconditions.checkNotNull(a); 所有传入null会空指针
        System.out.println(
                // 公共前缀
                Strings.commonPrefix("aaa","abc")
        );
        System.out.println(
//                公共后缀
                Strings.commonSuffix("bcd","csa")
        );
        System.out.println(
//                空字符串转为null
                Strings.emptyToNull("")
        );
        System.out.println(
//                判断是null还是空字符串
                Strings.isNullOrEmpty(null)
        );
        System.out.println(
//                null转空字符串
                Strings.nullToEmpty(null)
        );
        System.out.println(
                Strings.lenientFormat("aaa","c","b") //aaa [c, b]
        );
        System.out.println(
//               返回一个最小长度为5,以参数123为基准,不足的使用 c补充,
//                如果最小长度设置的小于基准123的长度,则返回123
                Strings.padEnd("123",5,'c')
        );
        System.out.println(
                Strings.padStart("777",6,'0')
        );
//        复制多分
        Strings.repeat("aaa",3);//aaaaaaaaa

Objects:

  最常用的 是 equal()方法

com.google.common.base.Objects.equal("aa",null);

如果使用的jdk版本是 java8以上的,则使用java8提供的Objects最好,提供的方法也多

 

 

Java、Hutool、Guava中字符串分割方法split()的用法 【4】如果限制参数为N,表示从左到右,分割后的长度为N,只要符合该长度,后面的不再继续分割,以此类推。【3】如果限制参数为2,表示从左到右,分割后的长度为2,只要符合该长度,后面的不再继续分割。1、以上两种方式 Hutool和Guava使用字符串分离器 split 结果是等效的。【2】如果限制参数为1,表示不分割,因为字符串本身整体就符合长度1。【1】如果限制参数为0(默认0),表示不限制长度,全部分割。【1】会保留首位分割符前面的空结果。【1】会忽略末尾分割符后面的空结果。1、Hutool用法。 阅读详情

相关推荐

PaddleOCR实战:从零开始训练自己的OCR模型(附完整代码与数据集处理技巧)

本文提供了一份详尽的PaddleOCR实战指南,手把手教你从零开始训练专属的OCR模型。内容涵盖高质量训练数据的准备与标注技巧、预训练模型的选型对比、关键参数调优策略,并附有完整的代码示例。通过遵循本文的步骤,开发者可以高效构建并优化贴合自身业务场景的高精度OCR模型,实现从数据到部署的全流程掌握。

weixin_29263201的博客 570

Google Guava常用类-Strings

static String commonPrefix(CharSequence a, CharSequence b) 返回a、b的最长公共前缀。 static String commonSuffix(CharSequence a, CharSequence b) 返回a、b的最长公共后缀。 CharSequence是一个接口,CharBuffer, Segment, String, StringB...

weixin_42983044的博客 1539

手把手教你编写PCIe设备驱动:基于Linux内核的实战教程

本文详细介绍了基于Linux内核的PCIe设备驱动开发全流程,包括环境准备、设备探测、中断处理、DMA配置等核心内容。通过实战代码示例和Makefile编写指南,帮助开发者快速掌握PCIe驱动开发技术,实现高性能设备驱动开发与优化。

weixin_30687051的博客 193

Guava.common.base.Strings---方法的使用

Guava---Strings将null转化为空字符串--->nullToEmpty将空字符串转化为null--->emptyToNull判断字符串是否为null/""--->isNullOrEmpty在string前追加到自定长度--->padStart在string后追加到自定长度--->padEnd复制string--->repeat最长公共前缀--->commonPrefix最长公共后缀--->commonSuffix根据模板参数格式化输出---&gt

weixin_45003796的博客 673

银河麒麟v10-arm版离线安装Portainer

银河麒麟v10-arm版离线安装Portainer

q_hsolucky的博客 3050

springcloud+nacos+gateway+oauth2小聚会

在微服务工程中,Nacos作为目前主流的注册中心和配置中心,Spring Cloud Gateway作为目前主流的网关,下面引入spring security+oauth2+jwt作为认证和授权中心,进行简单的聊聊。

ldcaws的专栏 2643

String.format()方法详解

String.format()作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,这里根据查阅的资料做个学习笔记,整理成如下文章,供后续复习查阅。

qq_43842093的博客 9012

Quantum Espresso实战进阶:HSE混合泛函在能带计算中的精准应用

本文深入探讨了在Quantum Espresso中应用HSE混合泛函进行高精度能带计算的实战方法。针对传统DFT方法低估半导体带隙的问题,HSE通过混合精确交换能,显著提升计算精度。文章详细讲解了从输入文件配置、参数设置(如nqx网格、exxdiv_treatment)、到自洽与非自洽计算流程,以及结果可视化与对比的全过程,并提供了关键的调优与避坑指南,助力实现从PBE到HSE的精准进阶。

weixin_28363123的博客 225

guava 工具类及代码

原文地址 :http://blog.csdn.net/ac_dao_di/article/details/53750028github : https://github.com/google/guavaMaven:&lt;dependency&gt; &lt;groupId&gt;com.google.guava&lt;/groupId&gt; &lt;artifactId&gt;guav...

public 910

使用openair包分析气象数据

气象数据通常是有规律的时间序列,分析气象数据时需要对空气质量测量、气象数据和扩散模型输出进行分析。openair 是用于分析空气质量数据或更广泛的大气成分数据的R软件包。该软件包广泛应用于学术界、公共和私营部门。该项目最初由英国自然环境研究委员会(NERC)资助,并由英国环境部(Defra)提供额外资金。

Christina 2518

车企自动泊车技术全解|纯视觉/多传感器融合双路线、端到端大模型革新 助力机械车位/无划线车位/极窄车位精准泊车落地

随着智能驾驶技术全面下沉,自动泊车已从高端车型专属配置,普及至十万级家用车型,成为车载核心刚需功能。但市面主流车企的泊车能力差距极大,核心差异源于传感器硬件架构、算法迭代逻辑、场景训练体系的全方位分化。传统规则式泊车算法仅适配标准划线车位,面对地库暗光、标线磨损、机械双层车位、极窄靠墙车位、无划线空地泊车等真实长尾场景极易失效。

getusushu的博客 105

Guava学习笔记(二):基础(Joiner,Objects,Splitter及Strings)

添加Maven依赖 JoinerTest import com.google.common.base.Joiner; import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; public c...

weixin_33690963的博客 99

SAP ABAP SSSLERR_PEER_CERT_UNTRUSTED 证书过期+证书导入+案例详解+注意事项

出于 IT 审计与安全管理,外部系统间通讯发布的 API 主流都是 HTTPS 协议,SAP 支持 SSL 证书。SSL 证书是有效期的,当证书失效时将返回错误 SSSLERR_PEER_CERT_UNTRUSTED ,此时需要导入新效期的证书。这篇文章完整讲解了证书过期处理的全过程。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 2362

一、Guava (基本工具)

基本工具: 使用Joiner类: 例如我们想将字符串列表通过一个分隔符链接起来,以前的方式就是迭代,append等操作,使用Joiner可以更方便。 Joiner一旦创建不可变,符合不变性,因此线程安全。 看一些测试用例: 链接字符串列表: String...

chiqulao5770的博客 86

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

《Guava》基础 入门

前言 Guava 包含我们在基于Java的项目中依赖的Google的几个核心库:集合,缓存,原语支持,并发库,通用批注,字符串处理,I / O等。 这些工具中的每一种都会被Google员工用于生产服务中,国内很多公司都在使用,它的封装极大加快了Java开发者的开发速度。 我们日常开发中 遇到最多的Exception 可能就是NullPointException 了,那么 guava 如何来优化这个问题呢? 避免使用null 粗心地使用null可能会导致各种错误。通过研究Google代码库,我们发现不应该有9

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 932

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

guava学习笔记

一、maven坐标 &lt;dependency&gt; &lt;groupId&gt;com.google.guava&lt;/groupId&gt; &lt;artifactId&gt;guava&lt;/artifactId&gt; &lt;version&gt;18.0&lt;/version&gt; &lt;/dependen

Awna的博客 1691

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

guava(3)--基本工具类

基本工具: 使用Joiner类: 例如我们想将字符串列表通过一个分隔符链接起来,以前的方式就是迭代,append等操作,使用Joiner可以更方便。 Joiner一旦创建不可变,符合不变性,因此线程安全。 看一些测试用例: 链接字符串列表: 01 String delimiter = ",";

sh542610的专栏 796

[转]基本Guava工具

转自:http://www.cnblogs.com/renchunxiao/p/3661918.html?utm_source=tuicool 使用Joiner类 将任意字符串通过分隔符进行连接到一起是大多程序员经常做的事情。他们经常使用array,list,iterable并且循环变量将每一个临时变量添加到StringBuilder当中去,并且中间添加分隔符。这些笨重的处理方式如下: ...

weixin_33712881的博客 75

Java语言简介及数据类型

一、Java语言简介及数据类型 1、八大基本类型 2、整型溢出 3、空指针异常 4、精度丢失 5、StringBuilder 6、Strings 7、Ints 8、Joiner 9、Splitter 10、Objects 11、CharMatcher 12、Optional 13、Function

smile4548656的博客 436

Java String类核心机制与性能优化实践

字符串处理是编程中的基础操作,Java中的String类通过不可变性和字符串常量池等机制实现高效内存管理。理解字符串的不可变特性(线程安全、哈希缓存)和常量池复用原理,是优化程序性能的关键。在实际开发中,字符串拼接、比较等操作需要特别注意性能差异,例如使用StringBuilder替代+运算符可提升数百倍效率。本文深入解析String类的设计哲学,包括内存存储结构、编码规范及JDK12+新特性,并结合正则表达式优化、内存泄漏排查等实战场景,帮助开发者掌握企业级字符串处理的最佳实践。

weixin_30514745的博客 360

Guava:Strings 字符串处理工具

String实例有关的静态实用程序方法。

qq_63815371的博客 1366

java pattern split_java – 如何Guava Splitter.onPattern(..) split()不同于String.split(..)?

你发现了一个错误!System.out.println(s.split("abc82")); // [abc, 8]System.out.println(s.split("abc8")); // [abc]@Overrideprotected String computeNext() {/** The returned string will be from the end of the las...

weixin_35106801的博客 329

Guava基本操作

guava就是类库,是java api的增强与扩展,里面有大量的方法供我们使用,使用之前需要引入包 1 2 3 4 5 6 7 8 <dependencies> <!--guava依赖--> <dependency> <groupId>com.google.guava</groupId&g...

bug_love的博客 776

使用guava分割字符串

http://ifeve.com/google-guava-strings/

文盲青年的博客 1734

java中字符串分割器_字符串(Strings)

Joiner将一个字符串序列用一个分隔符连接起来还是比较棘手的 — 但不应该是这样。如果序列包含null就更困难了,流式风格的Joiner让这一切变得简单起来。Joinerjoiner=Joiner.on("; ").skipNulls();returnjoiner.join("Harry",null,"Ron","Hermione");以上代码返回的是”Harry; Ron; Hermione”...

weixin_31983133的博客 752
上一篇: update set from 以及表 数据的复制 insert into select from ....
下一篇: guava--应用篇(二)Optional 和断言 Preconditions
xiaoduup
博客等级 码龄9年 23粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值