zoukankan      html  css  js  c++  java
  • guava学习笔记--字符串处理

    参考:并发编程网 – ifeve.com本文链接地址: [Google Guava] 6-字符串处理:分割,连接,填充


    package com.gkwind.strings;
    
    import com.google.common.base.CharMatcher;
    import com.google.common.base.Joiner;
    import com.google.common.base.Splitter;
    
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * Created by gkwind on 2018/2/13 0013.
     */
    public class StringUtilTest {
    
        public static void main(String[] args) {
    
    //        joinerTest();
    //        splitterTest();
            charMatcherTest();
        }
    
        //警告:joiner实例总是不可变的。
        // 用来定义joiner目标语义的配置方法总会返回一个新的joiner实例。
        // 这使得joiner实例都是线程安全的,你可以将其定义为static final常量。
        private static void joinerTest() {
            Joiner joiner =Joiner.on(";").skipNulls();
            System.out.println(joiner.join(Arrays.asList("1","a",3,null,"xxx")));//1;a;3;xxx
            Joiner joiner2 =Joiner.on(',').useForNull("	");
            System.out.println(joiner2.join(Arrays.asList("1","a",3,null,"xxx")));//1,a,3,	,xxx
        }
    
        private static void splitterTest(){
            String s=";a;;b; ;c; ";
            List<String> strings = Splitter.on(';').splitToList(s);
            System.out.println(strings);//[, a, , b,  , c,  ]
            strings = Splitter.on(';').trimResults().splitToList(s); //只是将空格替换成了空字符串
            System.out.println(strings);//[, a, , b, , c, ]
            strings = Splitter.on(';').trimResults().omitEmptyStrings().splitToList(s);//最符合预期 去掉了首尾的空格和所有空字符串
            System.out.println(strings);//[a, b, c]
            strings = Splitter.on(';').trimResults().omitEmptyStrings().limit(2).splitToList(s);
            System.out.println(strings);//[a, b; ;c;]
            for (String string : strings) {
                System.out.println(string);
            }
        }
    
        private static void charMatcherTest(){
            String  s=" axjn你AXc爱_)山到   付&*^哦度飞x903#$^24sjas,";
            // axjn你AXc爱_)山到   付&*^哦度飞x903#$^24sjas,
            System.out.println(s);
            //保留 数字
            System.out.println(CharMatcher.DIGIT.retainFrom(s));//90324
            //保留 ASCII
            System.out.println(CharMatcher.ASCII.retainFrom(s));// axjnAXc_)   &*^x903#$^24sjas,
            ////用*号 替换 所有数字
            System.out.println(CharMatcher.JAVA_DIGIT.replaceFrom(s, "*"));// axjn你AXc爱_)山到   付&*^哦度飞x***#$^**sjas,
            System.out.println(s.replaceAll("\d","*"));//同上
            //用*号 替换 所有数字和大写字符
            System.out.println(CharMatcher.JAVA_DIGIT.or(CharMatcher.JAVA_UPPER_CASE).replaceFrom(s, "*"));// axjn你**c爱_)山到   付&*^哦度飞x***#$^**sjas,
            System.out.println(s.replaceAll("[\dA-Z]","*"));//同上
            //保留 abc任意字符串
            System.out.println(CharMatcher.anyOf("abc").retainFrom(s));//aca
            System.out.println(CharMatcher.is('c').retainFrom(s));//c
            //保留 数字和c-z的字符
            System.out.println(CharMatcher.JAVA_DIGIT.or(CharMatcher.inRange('c','z')).retainFrom(s));//xjncx90324sjs
            //移除 数字和c-z的字符
            System.out.println(CharMatcher.JAVA_DIGIT.or(CharMatcher.inRange('c','z')).removeFrom(s));// a你AX爱_)山到   付&*^哦度飞#$^a,
    
    
        }
    
    }

    拆分器工厂

    方法描述范例
    Splitter.on(char)按单个字符拆分Splitter.on(‘;’)
    Splitter.on(CharMatcher)按字符匹配器拆分Splitter.on(CharMatcher.BREAKING_WHITESPACE)
    Splitter.on(String)按字符串拆分Splitter.on(“,   “)
    Splitter.on(Pattern) Splitter.onPattern(String)按正则表达式拆分Splitter.onPattern(“ ? ”)
    Splitter.fixedLength(int)按固定长度拆分;最后一段可能比给定长度短,但不会为空。Splitter.fixedLength(3)

    拆分器修饰符

    方法描述
    omitEmptyStrings()从结果中自动忽略空字符串
    trimResults()移除结果字符串的前导空白和尾部空白
    trimResults(CharMatcher)给定匹配器,移除结果字符串的前导匹配字符和尾部匹配字符
    limit(int)限制拆分出的字符串数量

    字符匹配器

    CharMatcher中的常量可以满足大多数字符匹配需求:

    ANYNONEWHITESPACEBREAKING_WHITESPACE
    INVISIBLEDIGITJAVA_LETTERJAVA_DIGIT
    JAVA_LETTER_OR_DIGITJAVA_ISO_CONTROLJAVA_LOWER_CASEJAVA_UPPER_CASE
    ASCIISINGLE_WIDTH  

    其他获取字符匹配器的常见方法包括:

    方法描述
    anyOf(CharSequence)枚举匹配字符。如CharMatcher.anyOf(“aeiou”)匹配小写英语元音
    is(char)给定单一字符匹配。
    inRange(char, char)给定字符范围匹配,如CharMatcher.inRange(‘a’, ‘z’)

    此外,CharMatcher还有negate()and(CharMatcher)or(CharMatcher)方法。

    使用字符匹配器

    CharMatcher提供了多种多样的方法操作CharSequence中的特定字符。其中最常用的罗列如下:

    方法描述
    collapseFrom(CharSequence,   char)把每组连续的匹配字符替换为特定字符。如WHITESPACE.collapseFrom(string, ‘ ‘)把字符串中的连续空白字符替换为单个空格。
    matchesAllOf(CharSequence)测试是否字符序列中的所有字符都匹配。
    removeFrom(CharSequence)从字符序列中移除所有匹配字符。
    retainFrom(CharSequence)在字符序列中保留匹配字符,移除其他字符。
    trimFrom(CharSequence)移除字符序列的前导匹配字符和尾部匹配字符。
    replaceFrom(CharSequence,   CharSequence)用特定字符序列替代匹配字符。

  • 相关阅读:
    ubuntu14.04恢复系统默认中文字体
    Mcafee两个Mac版本之间的区别
    关于Windows系统防火墙
    诺顿序列号获取方法
    如何将软件限制策略发挥大作用
    BootCamp支持软件4/5
    Android系统分区理解及分区目录细解
    给Adobe Reader添加书签功能
    PHP面向对象之旅:static变量与方法
    INSERT IGNORE 与 INSERT INTO的区别
  • 原文地址:https://www.cnblogs.com/thewindkee/p/12873203.html
Copyright © 2011-2022 走看看