盘点些Java强大第三方库(字符串操作)

2019-05-11  本文已影响0人  掌灬纹

1.字符串与集合间的转化

引用第三方库 Apache Commons Lang jre连接

值得一提的自JDK1.8以后字符串集合转为字符串可已使用String类下的join()方法,但别的数据类型还是要依靠第三方库--对比JDK和第三库代码如下

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
//导用第三库包
import org.apache.commons.lang3.StringUtils;

public class String2List {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("KeNan");
        list.add("HuiYuan");
        list.add("MaoLiLan");
        list.add("AnShiTou");
        //JDK1.8
        String str = String.join(",", list);//list集合中元素按顺序拼接","连接
        System.out.println(str);
        //apache commons lang
        String str2 = StringUtils.join(list, ",");
        System.out.println(str2);
        
        ///从字符串变回ArrayList
        List<String> list2 = Arrays.asList(str.split(","));
        for (String s : list2) {
            System.out.println(s);
        }
        
        //apache commons long 有更强大的功能,支持多种类型数据
        ArrayList<Integer> list3 = new ArrayList<Integer>();
        list3.add(1);list3.add(2);list3.add(3);
        String str3 = StringUtils.join(list3, "->");
        System.out.println(str3);
       
    }

}

2.驼峰命名规范字符串

引用第三方库Gogle Guava jre连接

简易实现将字符串按驼峰命名规则转换,还可以在构造链表时传参初始化链表

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

import com.google.common.base.CaseFormat;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;

public class GuavaUtil {
    /**
     * 采用Gogle Guava进行字符串处理(第三方库)
     * @param args
     */

    public static void main(String[] args) {
        //jdk
        List<Integer> list = new ArrayList<Integer>();
        list.add(123);
        list.add(456);
        System.out.println(list);
        
        //Guava - 构造列表时可以初始化
        List<Integer> guava_list = Lists.newArrayList(123, 456);
        System.out.println(guava_list);
        
        //拆分字符串可忽略空字符串
        Iterable<String> splist = Splitter.on(',')
                .trimResults()//拆分结果,自动除掉空串
                .omitEmptyStrings()//除掉空白字符
                .split("123,321,,    abc");
        System.out.println(splist);
        
        //驼峰命名转换
        String s1 = "CONSTANT_NAME";//转为constantName
        String s2 = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, s1);
        System.out.println(s1 + "  " + s2);
        
    }

}

3.字符串(文件)转为输入流的操作--OnlineJudge的实现原理

引用第三方库Apache Commons IO jre连接

从字符串到输入流(输入流可以定义为Scanner,这是OnlineJudge的实现原理)

import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Scanner;

import org.apache.commons.io.Charsets;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;

import com.google.common.collect.Lists;

public class String2InputStream {

    public static void main(String[] args) throws IOException {
        List<Integer> list = Lists.newArrayList(1, 2, 3 ,4, 5);
        String str = StringUtils.join(list, ",");
        //System.out.println(str);
        
        //将字符串作为默认的输入流
        InputStream in = IOUtils.toInputStream(str,
                Charsets.toCharset("UTF-8"));
        //重置系统的输入流,也就是说Scanner 不在从控制台中读数据
        //而是读取设定的输入流中的数据
        System.setIn(in);
        
        //模拟键盘输入,也是OJ平台测试用例输入的原理
        //也可以换成文件流
        Scanner sc = new Scanner(System.in);
        sc.useDelimiter(",");
        while(sc.hasNext()) {
            System.out.println(sc.next());
        }
        sc.close();
    }

}

上一篇下一篇

猜你喜欢

热点阅读