`
vahoa.ma
  • 浏览: 11004 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

google guava中定义的String操作

    博客分类:
  • java
阅读更多

介绍google guava对字符串操作的封装,包括判断字符串是否为空,取字符串的相同前缀,后缀,以及补全字符串;连接字符串,拆分字符串等常用的字符串的操作。

 

在google guava中为字符串操作提供了很大的便利,有老牌的判断字符串是否为空字符串或者为null,用指定字符填充字符串,以及拆分合并字符串,字符串匹配的判断等等。

下面我们逐一了解这些操作:

1. 使用com.google.common.base.Strings类的isNullOrEmpty(input)方法判断字符串是否为空

 

        //Strings.isNullOrEmpty(input) demo
        String input = "";
        boolean isNullOrEmpty = Strings.isNullOrEmpty(input);
        System.out.println("input " + (isNullOrEmpty?"is":"is not") + " null or empty.");

 2. 获得两个字符串相同的前缀或者后缀

 

 

        //Strings.commonPrefix(a,b) demo
        String a = "com.jd.coo.Hello";
        String b = "com.jd.coo.Hi";
        String ourCommonPrefix = Strings.commonPrefix(a,b);
        System.out.println("a,b common prefix is " + ourCommonPrefix);

        //Strings.commonSuffix(a,b) demo
        String c = "com.google.Hello";
        String d = "com.jd.Hello";
        String ourSuffix = Strings.commonSuffix(c,d);
        System.out.println("c,d common suffix is " + ourSuffix);

 3. Strings的padStart和padEnd方法来补全字符串

 

        int minLength = 4;
        String padEndResult = Strings.padEnd("123", minLength, '0');
        System.out.println("padEndResult is " + padEndResult);

        String padStartResult = Strings.padStart("1", 2, '0');
        System.out.println("padStartResult is " + padStartResult);

 4. 使用Splitter类来拆分字符串

Splitter类可以方便的根据正则表达式来拆分字符串,可以去掉拆分结果中的空串,可以对拆分后的字串做trim操作,还可以做二次拆分。

我们先看一个基本的拆分例子:

        Iterable<String> splitResults = Splitter.onPattern("[,,]{1,}")
                .trimResults()
                .omitEmptyStrings()
                .split("hello,word,,世界,水平");

        for (String item : splitResults) {
            System.out.println(item);
        }

 Splitter的onPattern方法传入的是一个正则表达式,其后紧跟的trimResults()方法表示要对结果做trim,omitEmptyStrings()表示忽略空字符串,split方法会执行拆分操作。

split返回的结果为Iterable<String>,我们可以使用for循环语句来逐个打印拆分字符串的结果。

Splitter还有更强大的功能,做二次拆分,这里二次拆分的意思是拆分两次,例如我们可以将a=b;c=d这样的字符串拆分成一个Map<String,String>。

        String toSplitString = "a=b;c=d,e=f";
        Map<String,String> kvs = Splitter.onPattern("[,;]{1,}").withKeyValueSeparator('=').split(toSplitString);
        for (Map.Entry<String,String> entry : kvs.entrySet()) {
            System.out.println(String.format("%s=%s", entry.getKey(),entry.getValue()));
        }

 二次拆分首先是使用onPattern做第一次的拆分,然后再通过withKeyValueSeperator('')方法做第二次的拆分。

5. 有拆分字符串必然就有合并字符串,guava为我们提供了Joiner类来做字符串的合并

我们先看一个简单的示例:

        String joinResult = Joiner.on(" ").join(new String[]{"hello","world"});
        System.out.println(joinResult);

 上面例子中我们使用Joiner.on(" ").join(xx)来合并字符串。很简单也很有效。

Splitter方法可以对字符串做二次的拆分,对应的Joiner也可以逆向操作,将Map<String,String>做合并。我们看下下面的例子:

        Map<String,String> map = new HashMap<String,String>();
        map.put("a", "b");
        map.put("c","d");
        String mapJoinResult = Joiner.on(",").withKeyValueSeparator("=").join(kvs);
        System.out.println(mapJoinResult);

 

使用withKeyValueSeparator方法可以对map做合并。合并的结果是:a=b,c=d

guava库中还可以对字符串做大小写转换(CaseFormat枚举),可以对字符串做模式匹配。使用起来都很方便 

0
1
分享到:
评论

相关推荐

    com.google.guava_1.6.0.jar.zip

    在Java编程中,Google Guava库是一个不可或缺的工具集合,它提供了大量的高效、实用的类和方法,极大地提升了开发效率。本次我们将聚焦于Guava中的`Ints`模块,通过分析`com.google.guava_1.6.0.jar.zip`这个压缩包...

    guava_programming.zip

    《深入理解Google Guava:函数式接口与EventBus解析》 Google Guava是Google推出的一个开源库,它为Java开发人员提供了一套丰富的工具类和集合框架,极大地提高了开发效率和代码质量。本资料主要围绕Guava中的两个...

    Google-Guava-Collections-使用介绍

    ### Google Guava Collections 使用介绍 #### 一、概述 Google Guava Collections 是 Java Collections Framework 的一个强大且实用的非官方扩展 API。它由 Google 工程师 Kevin Bourrillion 和 Jared Levy 在著名...

    Guava 工程项目包 有实例

    Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...

    java集合分组(Guava)

    Guava是Google推出的一个强大的Java工具包,其中的Multiset、Multimap和GroupingBy等功能提供了高级的集合操作,特别是对于集合的分组功能,它提供了一种高效且灵活的方式。 首先,我们需要理解Guava中的`...

    guava学习笔记

    Guava项目最初是为了解决Google内部项目中常见的问题,但随着其通用性和强大功能的展现,它逐渐被广泛接受和应用于Java开发者社区中。本学习笔记将重点介绍Guava中的几个核心工具类:Joiner、Splitter、...

    Getting start with guava

    通过本文介绍,我们了解到Google Guava库的强大功能及其在实际开发中的应用。Guava不仅提供了丰富的工具类,还极大地方便了Java开发者的日常工作。无论是集合操作、缓存管理还是并发编程,Guava都能提供有效的解决...

    Guava使用培训教程

    Guava是Google推出的一款Java核心类库,旨在通过添加一系列经过充分测试且高度实用的工具集来优化Java开发体验。该库包含了集合、缓存、原生类型支持、并发库、常见注解、字符串处理、I/O等多方面的功能,能够帮助...

    SpringBoot加入Guava Cache实现本地缓存代码实例

    接下来,我们创建一个 CacheService 接口,用于定义缓存的基本操作: ```java public interface CacheService { // 存 void setCommonCache(String key, Object value); // 取 Object getCommonCache(String ...

    springboot 使用 redis guava caffeine 缓存示例.zip

    现在,我们可以在控制器或服务类中定义方法,并使用`@Cacheable`、`@CacheEvict`等注解来控制Guava Cache的行为。 Caffeine是另一个高性能的本地缓存库,它旨在替代Guava Cache。Caffeine提供了比Guava更现代的API...

    JavaCachingwithGuava

    - 加载的结果会被返回给所有请求的线程,并使用类似于 `putIfAbsent` 的操作插入到缓存中。 这样的设计确保了即使多个线程同时请求相同的 key,也只会加载一次数据,从而提高了系统的整体性能。 #### 处理异常 ...

    string_byte_sink.rar_The Sink

    ByteSink是Google的Guava库中提供的一种接口,它允许我们将字节序列写入不同的目标,如内存、文件、网络连接等。标题"string_byte_sink.rar_The Sink"暗示了我们关注的是一个与字符串相关的ByteSink实现。 在描述中...

    google-gson-2.2.2

    在实际开发中,"google-gson-2.2.2"可以帮助开发者轻松地在Java对象和JSON/XML数据格式之间进行转换,简化数据处理的复杂性。不过要注意,虽然Gson库对XML的支持相对有限,但对于需要同时处理JSON和XML的项目,它仍...

    【zk开发】use和apply的区别

    在某些库中,如Guava或Apache Commons,`use`可能出现在资源管理的上下文中。例如,`com.google.common.io.Closeables`中的静态方法`use`用于确保资源(如文件流)在使用后正确关闭: ```java Closeables.use-or-...

    json-package

    描述中提到的"common"可能指的是一个通用库,这在Java开发中通常是指包含各种常用功能的库,如Apache Commons或Google Guava等。这些库可能会提供字符串处理、集合操作、I/O操作等多方面的支持,与JSON处理库一起...

    SpringBoot+EventBus使用教程示例代码

    在本文中,我们将深入探讨如何在SpringBoot应用中使用EventBus,这是一个基于Guava库的事件总线系统。EventBus的引入使得松耦合的组件间通信变得更加简单和高效。让我们一起通过步骤来理解这个“SpringBoot+EventBus...

    Java限速器、Springboot限速器

    我们可以结合Spring Cloud Gateway实现全局的限速控制,利用`@EnableGlobalMethodSecurity(prePostEnabled = true)`开启方法安全,然后定义一个自定义注解,如`@RateLimited`,并在Filter中处理这个注解,检查请求...

    泛型 反射 相关概念方法使用

    此外,很多工具类库,如Apache Commons Lang和Google Guava,也利用泛型和反射提高了代码的灵活性和可维护性。 总的来说,理解并熟练掌握泛型和反射是提升Java编程能力的关键。它们不仅增强了代码的类型安全性,还...

    黑马20天学java视频看完后整理的思维导图

    13. **Java API和库**:介绍常用API,如Math、Date、Calendar,以及第三方库如Apache Commons或Google Guava的使用。 14. **设计模式**:可能涵盖了单例、工厂、观察者、装饰器等常见设计模式的概念和应用场景。 ...

    otto事件总线两个类之间的传参

    Otto事件总线是由Square公司开发的一个轻量级的事件总线库,它基于Google的Guava库中的EventBus,旨在简化Android应用中的组件间通信。在这个“otto事件总线两个类之间的传参”示例中,我们将深入探讨如何利用Otto...

Global site tag (gtag.js) - Google Analytics