場(chǎng)景
字符串占位替換
1、String.format
最原始最基礎(chǔ)的方式。
使用%來表示占位,后面跟上不同的標(biāo)識(shí)符,用于限定這個(gè)占位符的參數(shù)類型,由jdk原生提供支持。
示例:
??????? String badao = String.format("hello:%s", "badao");
??????? System.out.println(badao);
2、MessageFormat
如果遇到一個(gè)參數(shù)需要替換模板中多個(gè)占位的場(chǎng)景,更友好的方式是MessageFormat,由jdk原生提供支持。
示例:
??????? String message = MessageFormat.format("hello:{0},your name is {0},your class is {1}","badao","class1");
??????? System.out.println(message);
字符串拼接
舉例:將int數(shù)組轉(zhuǎn)為英文逗號(hào)分割的字符串為例
首先初始化一個(gè)int數(shù)組
??????? List<Integer> integerList = new ArrayList<Integer>(){{
??????????? add(1);
??????????? add(2);
??????????? add(3);
??????? }};
1、StringBuilder來拼接
??????? StringBuilder stringBuilder = new StringBuilder();
??????? for (Integer i:integerList) {
??????????? stringBuilder.append(i).append(",");
??????? }
??????? String substring = stringBuilder.substring(0, stringBuilder.length() - 1);
??????? System.out.println(substring);
2、StringJoiner 由jdk1.8提供
??????? String collect = integerList.stream().map(String::valueOf).collect(Collectors.joining(","));
??????? System.out.println(collect);
3、如果使用的jdk不是1.8版本,還可使用guava的joiner
??????? String join = Joiner.on(",").join(integerList);
??????? System.out.println(join);
注:
博客:
霸道流氓氣質(zhì)的博客_CSDN博客-C#,架構(gòu)之路,SpringBoot領(lǐng)域博主
字符串與Collection的互轉(zhuǎn)
字符串轉(zhuǎn)列表
1、字符串先轉(zhuǎn)數(shù)組,然后再數(shù)組轉(zhuǎn)列表
通過Arrays.asList
??????? String[] cells = "a,b,c".split(",");
??????? List<String> stringList = Arrays.asList(cells);
??????? System.out.println(stringList);
通過Collections.addAll
??????? List<String> list1 = new ArrayList<>();
??????? Collections.addAll(list1,"a,b,c,d".split(","));
??????? System.out.println(list1);
如果希望轉(zhuǎn)成int列表
??????? List<Integer> collect = Stream.of("1, ,2 ,3,4".split(","))
??????????????? .map(String::trim)
??????????????? .filter(s -> !s.isEmpty())
??????????????? .map(Integer::valueOf)
??????????????? .collect(Collectors.toList());
??????? System.out.println(collect);
2、通過guava的方式
通過guava的Splitter.on().splitToList
??????? List<String> stringList1 = Splitter.on(",").splitToList("a,b,c,d,e");
??????? System.out.println(stringList1);
直接轉(zhuǎn)換成流可以使用splitToStream
??????? List<Integer> collect1 = Splitter.on(",").splitToStream("1, ,2 ,3,4")
??????????????? .map(String::trim)
??????????????? .filter(s -> !s.isEmpty())
??????????????? .map(Integer::valueOf)
??????????????? .collect(Collectors.toList());
??????? System.out.println(collect1);
列表轉(zhuǎn)字符串
1、通過StringBuilder
??????? StringBuilder builder = new StringBuilder();
??????? for (String str:stringList1){
??????????? builder.append(str).append(",");
??????? }
??????? //最后一個(gè)拼接符號(hào)不要
??????? String substring = builder.substring(0, builder.length() - 1);
??????? System.out.println(substring);//a,b,c,d,e
2、通過String.join
缺點(diǎn)是列表必須是字符串列表,如果換成int列表則不行文章來源:http://www.zghlxwxcb.cn/news/detail-592243.html
??????? String join = String.join(",", stringList1);
??????? System.out.println(join);//a,b,c,d,e
3、guava提供的Joiner? 沒有列表類型的限制文章來源地址http://www.zghlxwxcb.cn/news/detail-592243.html
??????? String join1 = Joiner.on(",").join(stringList1);
??????? System.out.println(join1);
到了這里,關(guān)于Java中字符串占位替換、字符串拼接、字符串與Collection互轉(zhuǎn)的方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!