文档章节

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

*/

© 著作权归作者所有

共有 人打赏支持
山东和湖北
粉丝 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 26.0 发布,Google 的 Java 核心工具库

Guava 26.0 已发布,更新如下: : Removed deprecated fields from . Use the equivalent methods instead. (f1249c4) : Fixed the that some users encountered when using Guava as a JPM......

淡漠悠然
08/02
0
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

没有更多内容

加载失败,请刷新页面

加载更多

DeepMind 开源图神经网络的代码

用于支持论文《Relational inductive biases, deep learning, and graph networks》。 github A graph network takes a graph as input and returns a graph as output. The input graph has......

shengjuntu
32分钟前
1
0
python2编码详解、一

以前使用python3没觉的什么,跟着公司使用python2后被编码问题折磨的痛不欲生,好好研究了一下编码问题,参考了很多博文,加入自己的理解,这里只是对编码的介绍,下一篇是python2中编码问题...

hc321
40分钟前
1
0
基于OpenSSL的一些常用加密签名算法

目前包括:MD5、SHA512、DES、RSA加解密、RSA+MD5签名验证算法,在openssl基础上再进行封装,使用简单,头文件需要包含openssl库,可以使用vcpkg自动管理,省去繁琐的配置工程的过程。 该RSA...

LoSingSang
49分钟前
1
0
spring Data JPA

什么是JPA? 全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。 为我们提供了: 1)ORM映射元数据:JPA支持XML和注解两种元...

狼王黄师傅
54分钟前
1
0
微信小程序 - 使用七牛云 API 截取第 n 秒图像为封面图

前面分享过七牛的上传操作,在这里说下使用七牛 api 对视频在页面的处理,比如你的视频上传之后获取七牛视频链接,这时候你怎么展示它呢? 在页面可以使用小程序提供的原生组件 video ,可以...

几个栗子
57分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部