guava(三)字符串处理 Joiner Splitter CharMatcher
一、Joiner
拼接字符串
1、join 拼接集合中的元素
System.out.println(Joiner.on(";").join(Ints.asList(1,2,3))); //1;2;3
2、skipNullls 过滤null
Joiner joiner=Joiner.on(";").skipNulls();
System.out.println(joiner.join("1",null,"22")); //1;22
3、useForNull 替换null
Joiner joiner=Joiner.on(";").useForNull("default");
System.out.println(joiner.join("1",null,"22"));//1;default;22
4、withKeyValueSeparator 拼接map中的元素
System.out.println(Joiner.on("#").withKeyValueSeparator("=").join(ImmutableMap.of("a",1,"b",2)));//a=1#b=2
二、Splitter
分割字符串
1、split 分割字符串,转集合
Iterable<String> iterable=Splitter.on(";").split("aa;b;cc");
2、splitToList 分割字符串,转list
List<String> list=Splitter.on(";").splitToList("aa;b;cc");
3、omitEmptyStrings 过滤空串
List<String> list=Splitter.on(";").omitEmptyStrings().splitToList("aa; ;b;cc");
System.out.println(list);//[aa,b,cc]
4、trimResults 将制定charmatcher转空串
List<String> list=Splitter.on(";").trimResults(CharMatcher.anyOf("a")).splitToList("aa;b");//[ ,b]
5、limit 分割到指定个数便不再分割
List<String> list=Splitter.on(";").limit(2).splitToList("aa;b;c");//[aa,b;c]
6、转map
Map<String,String> map=Splitter.on(";").withKeyValueSeparator("=").split("a=1;b=2");//{a=1,b=2}
三、CharMatcher
找到匹配的字符串or处理匹配的字符串
1、CharMatcher本身提供了很多CharMatcher实现类,如下:
ANY: 匹配任何字符
ASCII: 匹配是否是ASCII字符
BREAKING_WHITESPACE: 匹配所有可换行的空白字符(不包括非换行空白字符,例如"\u00a0")
DIGIT: 匹配ASCII数字
INVISIBLE: 匹配所有看不见的字符
JAVA_DIGIT: 匹配UNICODE数字, 使用 Character.isDigit() 实现
JAVA_ISO_CONTROL: 匹配ISO控制字符, 使用 Charater.isISOControl() 实现
JAVA_LETTER: 匹配字母, 使用 Charater.isLetter() 实现
JAVA_LETTER_OR_DIGET: 匹配数字或字母
JAVA_LOWER_CASE: 匹配小写
JAVA_UPPER_CASE: 匹配大写
NONE: 不匹配所有字符
SINGLE_WIDTH: 匹配单字宽字符, 如中文字就是双字宽
WHITESPACE: 匹配所有空白字符
以静态属性的方式使用。举个例子:
@Deprecated
public static final CharMatcher JAVA_LOWER_CASE = javaLowerCase();
public static CharMatcher javaLowerCase() {
return JavaLowerCase.INSTANCE;
}
private static final class JavaLowerCase extends CharMatcher { static final JavaLowerCase INSTANCE = new JavaLowerCase(); @Override
public boolean matches(char c) {
return Character.isLowerCase(c);
} @Override
public String toString() {
return "CharMatcher.javaLowerCase()";
}
}
2、常用操作方法
CharMatcher is(char match): 返回匹配指定字符的Matcher
CharMatcher isNot(char match): 返回不匹配指定字符的Matcher
CharMatcher anyOf(CharSequence sequence): 返回匹配sequence中任意字符的Matcher
CharMatcher noneOf(CharSequence sequence): 返回不匹配sequence中任何一个字符的Matcher
CharMatcher inRange(char startInclusive, char endIncludesive): 返回匹配范围内任意字符的Matcher
CharMatcher forPredicate(Predicate<? super Charater> predicate): 返回使用predicate的apply()判断匹配的Matcher
CharMatcher negate(): 返回以当前Matcher判断规则相反的Matcher
CharMatcher and(CharMatcher other): 返回与other匹配条件组合做与来判断的Matcher
CharMatcher or(CharMatcher other): 返回与other匹配条件组合做或来判断的Matcher
boolean matchesAnyOf(CharSequence sequence): 只要sequence中有任意字符能匹配Matcher,返回true
boolean matchesAllOf(CharSequence sequence): sequence中所有字符都能匹配Matcher,返回true
boolean matchesNoneOf(CharSequence sequence): sequence中所有字符都不能匹配Matcher,返回true
int indexIn(CharSequence sequence): 返回sequence中匹配到的第一个字符的坐标
int indexIn(CharSequence sequence, int start): 返回从start开始,在sequence中匹配到的第一个字符的坐标
int lastIndexIn(CharSequence sequence): 返回sequence中最后一次匹配到的字符的坐标
int countIn(CharSequence sequence): 返回sequence中匹配到的字符计数
String removeFrom(CharSequence sequence): 删除sequence中匹配到到的字符并返回
String retainFrom(CharSequence sequence): 保留sequence中匹配到的字符并返回
String replaceFrom(CharSequence sequence, char replacement): 替换sequence中匹配到的字符并返回
String trimFrom(CharSequence sequence): 删除首尾匹配到的字符并返回
String trimLeadingFrom(CharSequence sequence): 删除首部匹配到的字符
String trimTrailingFrom(CharSequence sequence): 删除尾部匹配到的字符
String collapseFrom(CharSequence sequence, char replacement): 将匹配到的组(连续匹配的字符)替换成replacement
String trimAndCollapseFrom(CharSequence sequence, char replacement): 先trim在replace
guava(三)字符串处理 Joiner Splitter CharMatcher的更多相关文章
- Python核心技术与实战——三|字符串
一.字符串基础 Python的字符串支持单引号('').双引号("")和三引号之中('''....'''和"""...""&quo ...
- Python专题三字符串的基础知识
Python专题三字符串的基础知识 在Python中最重要的数据类型包括字符串.列表.元组和字典等.该篇主要讲述Python的字符串基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引号. ...
- guava字符串工具--------Joiner 根据给定的分隔符把字符串连接到一起
public class JoinerTest { public static void main(String args[]){ //1.将list字符串集合,以,形式转为字符串 List<S ...
- guava处理字符串与List之间,字符串与map之间的转换<转>
import static org.junit.Assert.*; import java.util.List; import java.util.Map; import org.junit.Test ...
- Guava 工具类之joiner的使用
joiner主要用于对字符串的连接,也可用于对map中key value的连接 public class JoinerTest { private static final List<Strin ...
- Guava入门第一章(Joiner)
Guava是什么? Guava是一种基于开源的Java库,Google Guava源于2007年的"Google Collections Library".这个库是为了方便编码,并 ...
- ES6 ( 三 ) 字符串扩展
一.字符Unicode表示方法 ES6中可以使用以下6种方法表示字符 '\z' === 'z' // true '\172' === 'z' // true '\x7A' === 'z' // tru ...
- 【guava】字符串操作
一,Strings类 public void testStrings(){ Strings.isNullOrEmpty("");//返回true Strings.nullToEmp ...
- iOS开发-OC语言 (三)字符串
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 24.0px "PingFang SC" } p ...
随机推荐
- 基于Django的Rest Framework框架的分页组件
本文目录 一 简单分页(查看第n页,每页显示n条) 二 偏移分页(在第n个位置,向后查看n条数据) 三 CursorPagination(加密分页,只能看上一页和下一页,速度快) 回到目录 一 简单分 ...
- HTML连载46-浮动元素字围现象、浮动练习
一.浮动元素的字围现象 div{ float:left; width:100px; height:100px; background-color: red; border:1px solid blac ...
- php中trait的使用方法
1.php中的trait是啥? 看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:表明类可以做什么:提供模块化实现.Trait是一种代 ...
- java获取下一天的日期
我们来看看Java怎么获取下一天的日期: 哈哈哈,开玩笑啦,这个只是个段子. "哪怕悲伤有1000种,快乐有1种就够了."
- org.springframework.util.Base64Utils线程安全问题
Spring提供的org.springframework.util.Base64Utils类,先会检测JDK里是否自带java.util.Base64,如果不带,则使用的是apache提供的org.a ...
- SQLserver创建用户和给用户权限(学)
数据库基础知识:http://blog.csdn.net/u014600432/article/details/39645701 在SQL Server中创建用户角色及授权(使用SQL语句):http ...
- Mac下安装adb
1.检查是否安装adb briandeMacBook-Pro:~ brian$ adb -bash: adb: command not found briandeMacBook-Pro:~ brian ...
- [译]Zookeeper的优点与局限性
1.Zookeeper的优点与局限性 在学习了Zookeeper(后文都简称zk)的介绍和功能后,您已经很好地理解了zk. 现在,在这个zk教程中,我们将讨论zk的优点和局限性. zk有几个功能对用户 ...
- Spring源码解析系列汇总
相信我,你会收藏这篇文章的 本篇文章是这段时间撸出来的Spring源码解析系列文章的汇总,总共包含以下专题.喜欢的同学可以收藏起来以备不时之需 SpringIOC源码解析(上) 本篇文章搭建了IOC源 ...
- Thread之模板模式
我们知道,在实际使用线程的时候,真正的执行逻辑都是写在run方法里面,run方法是线程的执行单元,如果我们直接使用Thread类实现多线程,那么run方法本身就是一个空的实现,如下: /** * If ...