guava使用(一)--字符串操作

guava使用(一)–字符串操作

文章目录

  • guava使用(一)--字符串操作
      • 一、简介
      • 二、准备
        • 2.1 文档官网地址
        • 2.2 jar包
      • 三、使用
        • 3.1 字符串连接
        • 3.2 字符串切分
        • 3.3 字符串匹配处理
        • 3.4 字符串编码
        • 3.5 属性名转换
        • 3.6 字符串处理
      • 四、结尾

一、简介

guvara是谷歌开源的java工具库,提供了很多高效的类。这里介绍guava中部分常用的字符串操作,更多的操作可查看源码。目前最新版本为27.1-jre。

二、准备

2.1 文档官网地址

文档官网地址:https://github.com/google/guava/wiki/StringsExplained

2.2 jar包

guava最新的jar包版本为27.1-jre。使用中可添加maven依赖:


      com.google.guava
      guava
      27.1-jre

三、使用

3.1 字符串连接

Joiner类用于字符串连接,可对数组、List、Map等连接为字符串,常用方法有:

方法 使用
on() 指定连接符
skipNulls() 忽略null
useForNull() 对null使用替代符
withKeyValueSeparator() 键值对中(map中)的分隔符
join() 需连接的对象(list、map等

示例如下:

//字符串连接,skipNulls去掉null
String s1 = Joiner.on(",").skipNulls().join("one", null, "tow");
//字符串连接,useForNull对null使用默认值代替
String s2 = Joiner.on(",").useForNull("default").join("one", null, "tow");
//map转为字符串连接,on为entry间分隔符,withKeyValueSeparator为kev和value间分隔符
String s3 = Joiner.on("&").withKeyValueSeparator("=").join(ImmutableMap.of("one", "1", "two", "2"));

3.2 字符串切分

Splitter类可对字符串切分为List、Map。常用方法有:

方法 使用
on() 指定分隔符
onPattern() 使用正则作为分隔符
fixedLength() 固定长度切分
withKeyValueSeparator() 指定key/value的分隔符,用于切分为Map类型
trimResults() 去掉首尾空白符
omitEmptyStrings() 忽略空串
limit() 限制切分的个数
splitToList() 切分为List
split() 切分

示例如下:

String rawStr="好好学习  study ,hard 123 2323 , !  sf!!!桂\t林S\nSDF\rSSD  、DF   alter(test);
//单个分隔符(可单字或多字)分隔
List<String> list1 = Splitter.on("。").trimResults().omitEmptyStrings().splitToList(rawStr);
//正则分隔
List<String> list2 = Splitter.onPattern("\\s").trimResults().omitEmptyStrings().splitToList(rawStr);
//多个分隔符分隔
List<String> list3 = Splitter.on(CharMatcher.anyOf(",,")).trimResults().omitEmptyStrings().splitToList(rawStr);
//fixedLength固定长度切分,limit限制最大分隔量
List<String> list4 = Splitter.fixedLength(8).trimResults().omitEmptyStrings().limit(6).splitToList(rawStr);
//字符串转为map,on切分字符串,withKeyValueSeparator分隔key和value
Map<String, String> map1 = Splitter.on(",").withKeyValueSeparator("=").split("one=1,two=2,three=3,four=4");

3.3 字符串匹配处理

CharMatcher类可进行字符串匹配抽取,流程是

匹配目标串 --> 对匹配串操作

匹配目标串常用方法有:

方法 使用
inRange() 指定匹配字符区间
whitespace() 匹配空白符
ascii() 匹配ascci码
javaIsoControl() 匹配ios控制符
is() 匹配指定字符
isNot() 不匹配指定字符
anyOf() 匹配任意字符
noneOf() 不匹配任意字符

还可使用or(或)/negate(取反)/and(并)进行逻辑组合。
对匹配串操作的常用方法有:

方法 使用
retainFrom() 保留匹配串
removeFrom() 删除匹配串
replaceFrom() 替换匹配串
collapseFrom() 去掉连接匹配串,并用指定字符代替
trimFrom() 删除首尾匹配串
countIn() 统计匹配串
matchesAnyOf() 判断是否匹配任一字符

示例如下:

String rawStr="好好学习  study hard 123 2323  !  sf!!!桂\t林S\nSDF\rSSD  DF   alter(test);
//在原始串中保留指定区间内的字符
result = CharMatcher.inRange('0', '9').retainFrom(rawStr);
//去掉空白或指定字符
result = CharMatcher.whitespace().or(CharMatcher.anyOf("<>!/,。")).removeFrom(rawStr);
//替换非\t\n\r的字符
result = CharMatcher.javaIsoControl().negate().replaceFrom(rawStr, "default");
//去掉首尾ascii码字符
result = CharMatcher.ascii().trimFrom(rawStr);
//统计ascii码字符
int cnt = CharMatcher.ascii().countIn(rawStr);
//判断ascii码字符
boolean flag = CharMatcher.ascii().matchesAnyOf(rawStr);
//去掉连续指定字符并用指定字符替换
result = CharMatcher.whitespace().trimAndCollapseFrom(rawStr, ' ');

3.4 字符串编码

Charsets类提供了常用编码工具类,示例如:

//Charsets.UTF_8即是Charset.forName("UTF-8")
byte[] b1 = "study".getBytes(Charsets.UTF_8);

3.5 属性名转换

CaseFormat提供了属性名转换的方法,常用属性格式有:

属性名格式 解析
CaseFormat.LOWER_UNDERSCOR 小写下划线,如lower_underscore
CaseFormat.LOWER_CAMEL 小写驼峰,如lowerCamel
CaseFormat.LOWER_HYPHEN 小写中划线,如lower_hyphen
CaseFormat.UPPER_CAMEL 大写驼峰,如UpperCamel
CaseFormat.UPPER_UNDERSCORE 大写下划线,如UPPER_UNDERSCORE

示例如下:

//小下划线转为小写驼峰,返回值为stuName
result = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "stu_name");
//小写驼峰转为下划线,返回值为stu_name
result = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "stuName");
//小驼峰转为小写中划线,返回值为stu-name
result = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, "stuName");
//小写驼峰转为大写驼峰,返回值为StuName
result = CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, "stuName");
//小写驼峰转为大写下划线,返回值为STU_NAME
result = CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, "stuName");

3.6 字符串处理

Strings类提供了字符串的处理,包括相同前后缀提取、字符填充、格式化等。

示例如下:

//获取相同前缀
result = Strings.commonPrefix("aacdd22","aacex22");
//获取相同后缀
result = Strings.commonSuffix("aacdd22","aacex22");
//开头字符填充
result = Strings.padStart("aa",8,'x');
//结尾字符填充
result = Strings.padEnd("aa",8,'x');
//结尾字符填充
result = Strings.repeat("ax",3);
//格式化字符串
result = Strings.lenientFormat("%s+%s=%s", 1,2,3);

四、结尾

至此列举了guava中部分常用的字符串操作,举一反三,更多操作请查看源码。

你可能感兴趣的:(guava)