文档章节

Guava String

山东和湖北
 山东和湖北
发布于 2016/05/12 00:01
字数 908
阅读 13
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
2
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
2
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
68
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部