Java 中的 StringJoiner
让我想到了 Python 的 .join
方法。于是不禁发出这样的疑问:
1 Java 中有没有 .join
操作呢?
2 Python 中的是什么样的用法?和 Java 的操作方法上有没有什么相似之处呢?
3 这种字符串拼接出现在什么样的应用场景中?
有了问题,就有了后面的搜索与思考。
首先,回答第一个问题:
Java 中 也有 String.join
操作。我自己编了一个场景,通过输入台,来输入自己的指令。假装在训练程序,在我心情好的时候,输进去天气很热时的备选清单,然后它输出一下来确定。后面当我问它时,就直接随机抛出来一个给我(后半部分 random
取 ArrayList
中的元素即可,代码主要体现 join
有关操作)。
package com.ftech.t;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringJoiner;
/**
* 学习 字符串的拼接方法
*
* 试图得到: 天气热了吃啥的回答,将回答的内容一个个的添加到
* 在输出时,用 、 分隔开。最后一个用句号。(更复杂的倒数第二个用和)
*/
public class Join2{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("天气热了,晚上吃啥呢?");
System.out.println("输入 quit 结束回答。");
ArrayList<String> whatToEat = new ArrayList<>();
while (true) {
String food = sc.next();
if (food.equals("quit")) {
break;
}
whatToEat.add(food);
}
String joined = String.join("、", whatToEat); // 方法一:有一个现成的 列表类型变量
System.out.println(joined);
System.out.println("========================");
// 方法二:StringJoiner
StringJoiner sj = new StringJoiner("、", "热的话就吃:", "。");
for
这段代码用到了两种拼接方法:
- String.join
String joined2 = String.join("、", whatToEat); // 方法一:有一个现成的 列表类型变量
如果只用某种分隔符粘起来,那么 String.join
也够用。
- StringJoiner
StringJoiner sj = new StringJoiner("、", "热的话就吃:", "。");
for
方法中的三个参数,从左到右依次表示 分隔符,前缀
和 后缀
。
在 需要加前后缀 的情况下非常方便。
以下为运行截图:
接着回答第二个问题,Python 中,目前我知道的没有 joiner 的用法。也有 str.join 的操作,不过是 sep.join(listObject)
的形式。例如:
和 Java 的 String.join
非常像。一般用在爬虫的时候拼多个属性,再 yield
出去。
最后一个问题呢,其实有点谜底摆在谜面上的意思了。进一步的疑问就是,什么时候会用到字符串拼接呢?
1 拼一个独特的字符串,来 Hash 或者用其他的加密算法作字符串的加密转换,生成一个唯一标识符;
2 拼多个属性,来作为某一个大类的属性;
3 等你补充?