文档章节

Guava String

山东和湖北
 山东和湖北
发布于 2016/05/12 00:01
字数 908
阅读 15
收藏 0
package GuavaString;

import com.google.common.base.*;
import com.google.common.collect.Lists;
import org.apache.commons.lang.CharSet;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by ZhaoYun on 2016/5/11.
 * 字符串的处理 分割 连接  填充
 */
public class GuavaString {

    private static final Joiner joiner = Joiner.on(",").skipNulls();//skipNulls 这样可以过滤null值  否则遇到null时会报 NullPointerException

    private static final Splitter spl = Splitter.on(",").omitEmptyStrings().trimResults().limit(10);//按单个字符串拆分 omitEmptyStrings会忽略空字符串
    // trimResults移除结果字符串的前后空白  limit 限制分割的数量


    public static void main(String[] args){

        //String 连接器 Joiner
        String[] strings = new String[]{"a","b","c","d",null};
        String afterJoin = joiner.join(strings);
        System.out.println("String[] : " + afterJoin);// System.out.println的快捷键:sout 然后按tab 建

        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("");
        list.add("c");
        System.out.println("list :" + joiner.join(list));

        //String 拆分器 Splitter
        list = Lists.newArrayList(spl.split(afterJoin));
        for(String str : list){
            System.out.println(str);
        }

        //String 匹配器 CharMatcher
        String string = "0123456789SuccessControl";
        string = CharMatcher.JAVA_ISO_CONTROL.removeFrom(string); //移除control
        string = CharMatcher.DIGIT.retainFrom(string);//只保留数字
        string = CharMatcher.DIGIT.retainFrom(string);//获取所有的数字
        string = CharMatcher.WHITESPACE.trimAndCollapseFrom(string, ' ');//去除两端的空格;并把中间的连续空格替换成单个空格
        string = CharMatcher.JAVA_DIGIT.replaceFrom(string, "*");//用*号替换所有数字
        string = CharMatcher.JAVA_DIGIT.or(CharMatcher.JAVA_LOWER_CASE).retainFrom(string);// 只保留数字和小写字母
        string = CharMatcher.JAVA_UPPER_CASE.retainFrom(string);//获取所有的大写字母
        string = CharMatcher.SINGLE_WIDTH.retainFrom(string);//获取所有单字节长度的符号
        System.out.println(string);

        // Charsets 字符集 提供六种字符集常量引用

        // CaseFormat 大小写转换器
    }

}
匹配器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: 匹配所有空白字符

匹配器CharMatcher常用方法:
    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 Collections
下一篇: Jgroups
山东和湖北
粉丝 0
博文 6
码字总数 4761
作品 0
昌平
程序员
私信 提问
运行依赖第三方jar包和本项目的类的scala脚本

以guava-14.0.1.jar为例 ==============================scala编译================================: scalac -cp guava-14.0.1.jar src/com/pojo/SoitemRpt.scala src/Sample.scala -d tar......

月下独酌100
2015/11/18
0
0
Google Guava vs Apache Commons for Argument Validation

It is an established good practice to validate method arguments at the beginning of the method body. For example you could check that the passed value is not negative before doi......

泳泳啊泳泳
01/07
0
0
Guava 27.0.1 发布,Google 的 Java 核心工具库

Guava 27.0.1 发布了,Guava 是 Google 的一个开源项目,包含许多 Google 核心 Java 常用库,如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [con...

局长
11/21
1K
0
guava 实用操作集合

guava是 google 几个java核心类库的集合,包括集合、缓存、原生类型、并发、常用注解、基本字符串操作和I/O等等。 大家平时经常遇到某些相同的问题,自己写代码也都能解决。但是久而久之会感觉...

Atom_me
2016/01/01
204
1
使用Google Guava快乐编程

目前Google Guava在实际应用中非常广泛,本篇博客将以博主对Guava使用的认识以及在项目中的经验来给大家分享!正如标题所言,学习使用Google Guava可以让你快乐编程,写出优雅的JAVA代码! ...

zfz_linux_boy
2017/04/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Andrew Ng教你如何引领公司进入AI时代

摘要: 人工智能时代,企业转型遇到困难?看看Andrew Ng的建议吧! AI(人工智能)技术就像100年前的电力一样,正准备改变每个行业。从现在到2030年,它将创造约13万亿美元的GDP增长。虽然它...

阿里云官方博客
16分钟前
1
0
斗图咖(www.doutuka.com)上线纪念

网站名称:斗图咖 网站描述:是一款年轻人都在玩的斗图网站,来斗图咖一起斗图装逼交朋友吧。站长每天上传收集的最新最火斗图,供大家娱乐聊天发表情;后期也会开发表情自主设计,自己设计表...

focusone
37分钟前
4
0
Spring AOP 切面编程记录日志和接口执行时间

最近客户现在提出系统访问非常慢,需要优化提升访问速度,在排查了nginx、tomcat内存和服务器负载之后,判断是数据库查询速度慢,进一步排查发现是因为部分视图和表查询特别慢导致了整个系统...

编程SHA
48分钟前
8
0
15个Spring的核心注释示例

众所周知,Spring DI和Spring IOC是Spring Framework的核心概念。让我们从org.springframework.beans.factory.annotation和org.springframework.context.annotation包中探索一些Spring核心注......

java菜分享
54分钟前
2
0
[LintCode] Binary Tree Level Order Traversal(二叉树的层次遍历)

描述 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7 返回他的分层遍历结果: [ [3], [...

honeymose
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部