展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > 一文详解Java Guava核心字符串API操作的实用指南

一文详解Java Guava核心字符串API操作的实用指南

Guava是Google开源的Java工具库,其核心字符串API包括Strings、CharMatcher、Splitter、Joiner等一系列,全面覆盖空值处理、字符匹配、分割拼接、格式转换等常见场景,API设计非常简洁,边界处理极其健壮,能显著提升开发效率,广泛应用于各类Java项目,是高效开发的强大利器。

在日常 Ja va 开发里,字符串操作几乎是每天都要打交道的活儿。JDK 自带的那些工具类怎么说呢,功能有是有,但遇到稍微复杂点的场景,写出来的代码就变得又长又啰嗦。这时候 Gua va 就派上用场了——作为 Google 开源的核心 Ja va 库,它提供了一套极其顺手、高效且功能完备的字符串工具集,能让你从一堆模板代码里解放出来。下面咱们就挨个拆解 Gua va 里的核心字符串 API,看看它们到底好在哪、怎么用。

一、Gua va 字符串工具概览

Gua va 的 com.google.common.base 包下面藏着大量实用的字符串处理工具,覆盖了空值处理、字符匹配、分割拼接、格式转换等常见场景。和 JDK 原生 API 比起来,它的优势相当明显:调用方式更简洁,能少写不少模板代码;边界处理更健壮,比如空值和空字符串都给你考虑好了;而且很多功能设计得更贴合实际业务需求,比如那些现成的字符匹配规则。

二、核心 API 详解

1. Strings:基础字符串工具

Strings 类专门解决那些最基础但也最烦人的问题——空值和空字符串。

空值/空字符串处理

比如你要判断一个字符串是不是 null 或者空串,JDK 里得写 s == null || s.isEmpty(),用 Strings.isNullOrEmpty() 一句话搞定。还有 nullToEmpty() 和 emptyToNull(),一个把 null 转成空串,一个反过来,干净利落。padStart() 和 padEnd() 则用来补全字符串到固定长度,比如左补空格或指定字符:

// 输出 "  abc"(左补2个空格至长度5)
String padded = Strings.padStart("abc", 5, ' ');
// 输出 "abc  "(右补2个空格至长度5)
String paddedEnd = Strings.padEnd("abc", 5, ' ');

2. CharMatcher:灵活的字符匹配器

如果说要选 Gua va 字符串处理里最核心的工具,那非 CharMatcher 莫属。你可以把它理解成一个“字符级别的正则表达式”,但性能更好、写法更直观。

内置常用匹配器

Gua va 已经给你预制了一大堆开箱即用的匹配器,覆盖绝大多数场景:WHITESPACE(空白字符)、DIGIT(数字)、LETTER(字母)、ASCII(ASCII 字符),还有 is() 匹配单个字符、inRange() 匹配字符范围等等。

核心操作

保留匹配字符:retainFrom()

// 提取字符串中的所有数字,输出 "12345"
String digits = CharMatcher.DIGIT.retainFrom("abc123def45");

移除匹配字符:removeFrom()

// 移除所有空白字符,输出 "helloworld"
String noWhitespace = CharMatcher.WHITESPACE.removeFrom("hello  world\n");

替换匹配字符:replaceFrom()

// 将所有制表符替换为空格,输出 "hello   world"
String replaced = CharMatcher.TAB.replaceFrom("hello\t\tworld", ' ');

修剪匹配字符:trimFrom()(首尾)、trimLeadingFrom()(开头)、trimTrailingFrom()(结尾)

// 移除首尾数字,输出 "abc"
String trimmed = CharMatcher.DIGIT.trimFrom("123abc456");

组合匹配器

更复杂的规则可以用 and()、or()、negate() 来组合:

// 匹配「非字母且非数字」的字符,输出 "!@#"
CharMatcher nonLetterDigit = CharMatcher.LETTER.or(CharMatcher.DIGIT).negate();
String specialChars = nonLetterDigit.retainFrom("abc123!@#def456");

3. Splitter:灵活的分割器

JDK 自带的 String.split() 用起来槽点不少:空字符串莫名其妙就丢了、正则表达式还得小心陷阱。Gua va 的 Splitter 则让你对分割过程有完全的控制。

基础用法

// 按逗号分割,自动忽略空字符串,输出 ["a", "b", "c"]
List split = Splitter.on(',')
    .omitEmptyStrings() // 忽略空元素
    .trimResults() // 去除每个元素的空白
    .splitToList("a,, b ,c");

核心特性

  • on(char separator):按单个字符分割
  • on(String separator):按字符串分割
  • onPattern(String regex):按正则表达式分割
  • limit(int limit):限制结果数量
  • fixedLength(int length):按固定长度分割

比如按固定长度分割字符串:

// 输出 ["abc", "def", "g"]
List fixedSplit = Splitter.fixedLength(3).splitToList("abcdefg");

4. Joiner:拼接利器

拼接集合或数组的时候,最烦的就是处理 null 和分隔符。用 Joiner 一切变得清爽。

基础用法

// 拼接列表,输出 "a,b,c"
String joined = Joiner.on(',')
    .skipNulls() // 跳过 null 元素
    .join(Arrays.asList("a", null, "b", "c"));

// 替换 null 元素,输出 "a,空,b,c"
String joinedWithNull = Joiner.on(',').useForNull("空").join(Arrays.asList("a", null, "b", "c"));

拼接 Map

// 输出 "k1=v1,k2=v2"
Map map = ImmutableMap.of("k1", "v1", "k2", "v2");
String mapJoined = Joiner.on(',').withKeyValueSeparator('=').join(map);

5. CaseFormat:大小写格式转换

不同命名规范之间的转换(驼峰、下划线、连字符)也是家常便饭,CaseFormat 就是干这个的。

常用格式枚举

  • LOWER_CAMEL:小驼峰(lowerCamel)
  • UPPER_CAMEL:大驼峰(UpperCamel)
  • LOWER_UNDERSCORE:下划线小写(lower_underscore)
  • UPPER_UNDERSCORE:下划线大写(UPPER_UNDERSCORE)
  • LOWER_HYPHEN:连字符小写(lower-hyphen)

转换示例

// 下划线转小驼峰,输出 "helloWorld"
String camel = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "hello_world");
// 小驼峰转连字符,输出 "hello-world"
String hyphen = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, "helloWorld");

6. Ascii:ASCII 字符处理

Ascii 专注于 ASCII 字符的大小写转换和校验,比 JDK 的 Character 更高效,因为不用操心 Unicode:

// ASCII 小写转大写,输出 "HELLO"
String upper = Ascii.toUpperCase("hello");
// 校验是否为 ASCII 可打印字符
boolean isPrintable = Ascii.isPrintable('a');

三、实战场景示例

场景 1:清洗用户输入

假设你要过滤用户输入的昵称,只保留字母、数字和下划线,其他字符替换成下划线,并且首尾不能有空白。

String nickname = "  张三123!@#_test  ";
// 1. 去除首尾空白 2. 非字母/数字/下划线替换为下划线 3. 合并连续下划线
String cleaned = CharMatcher.WHITESPACE.trimFrom(nickname);
cleaned = CharMatcher.JA VA_LETTER_OR_DIGIT.or(CharMatcher.is('_'))
    .negate()
    .replaceFrom(cleaned, '_');
cleaned = CharMatcher.is('_').collapseFrom(cleaned, '_');
// 输出 "张三123_test"(中文不在 ASCII 范围内,CharMatcher.JA VA_LETTER 包含中文)

场景 2:解析配置字符串

比如你有一个形如 key1=value1;key2=value2;key3=value3 的配置字符串,要解析成 Map,还要忽略空行和 # 开头的注释行。

String config = "# 配置示例\nkey1=value1;;key2=value2;key3=value3";
Map configMap = Splitter.on(';')
    .omitEmptyStrings()
    .trimResults()
    .splitToStream(config)
    .filter(line -> !line.startsWith("#"))
    .map(line -> Splitter.on('=').limit(2).splitToList(line))
    .collect(Collectors.toMap(
        list -> list.get(0),
        list -> list.size() > 1 ? list.get(1) : ""
    ));
// 输出 {key1=value1, key2=value2, key3=value3}

四、使用注意事项

依赖引入:在 Ma ven 项目里添加 Gua va 依赖,推荐用最新稳定版:


    com.google.gua va
    gua va
    32.1.3-jre

如果是 Android 项目,记得换成 gua va:32.1.3-android。

空值处理:Gua va 大多数工具对 null 都挺友好,但 Splitter 和 Joiner 默认不会自动处理 null,需要显式调用 skipNulls() 或 useForNull()。

性能考量:CharMatcher 是不可变的,预定义的匹配器(比如 DIGIT、WHITESPACE)可以反复用,不用担心重复创建的开销。

五、总结

Gua va 的字符串工具类通过封装高频场景、加强边界处理,让 Ja va 字符串操作变得更高效、更易读。从基础的 Strings 到灵活的 CharMatcher,再到可控的 Splitter 和 Joiner,几乎覆盖了日常开发里你能遇到的所有字符串处理需求。和原生 JDK API 一比,Gua va 写出来的代码不仅更短,还更健壮——确实是 Ja va 开发者不可或缺的效率提升利器。

本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
编程开发 Java
相关文章 更多
精品专题 更多
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

Mac软件 更多
photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。