介绍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枚举),可以对字符串做模式匹配。使用起来都很方便
相关推荐
在Java编程中,Google Guava库是一个不可或缺的工具集合,它提供了大量的高效、实用的类和方法,极大地提升了开发效率。本次我们将聚焦于Guava中的`Ints`模块,通过分析`com.google.guava_1.6.0.jar.zip`这个压缩包...
《深入理解Google Guava:函数式接口与EventBus解析》 Google Guava是Google推出的一个开源库,它为Java开发人员提供了一套丰富的工具类和集合框架,极大地提高了开发效率和代码质量。本资料主要围绕Guava中的两个...
### Google Guava Collections 使用介绍 #### 一、概述 Google Guava Collections 是 Java Collections Framework 的一个强大且实用的非官方扩展 API。它由 Google 工程师 Kevin Bourrillion 和 Jared Levy 在著名...
Guava 是一个由 Google 开发并维护的 Java 库,它提供了许多实用工具类和集合框架的增强功能,极大地丰富了 Java 平台的标准库。Guava 的目标是解决 Java 开发人员在日常工作中遇到的各种常见问题,提高开发效率和...
Guava是Google推出的一个强大的Java工具包,其中的Multiset、Multimap和GroupingBy等功能提供了高级的集合操作,特别是对于集合的分组功能,它提供了一种高效且灵活的方式。 首先,我们需要理解Guava中的`...
Guava项目最初是为了解决Google内部项目中常见的问题,但随着其通用性和强大功能的展现,它逐渐被广泛接受和应用于Java开发者社区中。本学习笔记将重点介绍Guava中的几个核心工具类:Joiner、Splitter、...
通过本文介绍,我们了解到Google Guava库的强大功能及其在实际开发中的应用。Guava不仅提供了丰富的工具类,还极大地方便了Java开发者的日常工作。无论是集合操作、缓存管理还是并发编程,Guava都能提供有效的解决...
Guava是Google推出的一款Java核心类库,旨在通过添加一系列经过充分测试且高度实用的工具集来优化Java开发体验。该库包含了集合、缓存、原生类型支持、并发库、常见注解、字符串处理、I/O等多方面的功能,能够帮助...
接下来,我们创建一个 CacheService 接口,用于定义缓存的基本操作: ```java public interface CacheService { // 存 void setCommonCache(String key, Object value); // 取 Object getCommonCache(String ...
现在,我们可以在控制器或服务类中定义方法,并使用`@Cacheable`、`@CacheEvict`等注解来控制Guava Cache的行为。 Caffeine是另一个高性能的本地缓存库,它旨在替代Guava Cache。Caffeine提供了比Guava更现代的API...
- 加载的结果会被返回给所有请求的线程,并使用类似于 `putIfAbsent` 的操作插入到缓存中。 这样的设计确保了即使多个线程同时请求相同的 key,也只会加载一次数据,从而提高了系统的整体性能。 #### 处理异常 ...
ByteSink是Google的Guava库中提供的一种接口,它允许我们将字节序列写入不同的目标,如内存、文件、网络连接等。标题"string_byte_sink.rar_The Sink"暗示了我们关注的是一个与字符串相关的ByteSink实现。 在描述中...
在实际开发中,"google-gson-2.2.2"可以帮助开发者轻松地在Java对象和JSON/XML数据格式之间进行转换,简化数据处理的复杂性。不过要注意,虽然Gson库对XML的支持相对有限,但对于需要同时处理JSON和XML的项目,它仍...
在某些库中,如Guava或Apache Commons,`use`可能出现在资源管理的上下文中。例如,`com.google.common.io.Closeables`中的静态方法`use`用于确保资源(如文件流)在使用后正确关闭: ```java Closeables.use-or-...
描述中提到的"common"可能指的是一个通用库,这在Java开发中通常是指包含各种常用功能的库,如Apache Commons或Google Guava等。这些库可能会提供字符串处理、集合操作、I/O操作等多方面的支持,与JSON处理库一起...
在本文中,我们将深入探讨如何在SpringBoot应用中使用EventBus,这是一个基于Guava库的事件总线系统。EventBus的引入使得松耦合的组件间通信变得更加简单和高效。让我们一起通过步骤来理解这个“SpringBoot+EventBus...
我们可以结合Spring Cloud Gateway实现全局的限速控制,利用`@EnableGlobalMethodSecurity(prePostEnabled = true)`开启方法安全,然后定义一个自定义注解,如`@RateLimited`,并在Filter中处理这个注解,检查请求...
此外,很多工具类库,如Apache Commons Lang和Google Guava,也利用泛型和反射提高了代码的灵活性和可维护性。 总的来说,理解并熟练掌握泛型和反射是提升Java编程能力的关键。它们不仅增强了代码的类型安全性,还...
13. **Java API和库**:介绍常用API,如Math、Date、Calendar,以及第三方库如Apache Commons或Google Guava的使用。 14. **设计模式**:可能涵盖了单例、工厂、观察者、装饰器等常见设计模式的概念和应用场景。 ...
Otto事件总线是由Square公司开发的一个轻量级的事件总线库,它基于Google的Guava库中的EventBus,旨在简化Android应用中的组件间通信。在这个“otto事件总线两个类之间的传参”示例中,我们将深入探讨如何利用Otto...