盘点些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();
}
}