如何去除ArrayList输出结果中逗号后的空格?
问题分析与解决
你遇到的核心问题不是元素本身带空格,而是ArrayList默认的toString()方法会在元素之间自动添加逗号加空格。你代码里的word.replaceAll("\\s+","")没起作用,是因为String是不可变类型,调用replaceAll后必须把返回值重新赋值给变量,但实际上你用split("\\s+")分割后得到的单词已经是无空格的,这个操作本来就多余。
另外注意:你代码里的split("\s+")要改成split("\\s+"),Java字符串里的转义符需要双反斜杠,否则会被判定为非法转义。
解决方法
要得到你想要的无空格格式输出,不能直接打印ArrayList,需要手动控制拼接逻辑:
方法1:手动循环拼接
StringBuilder sb = new StringBuilder("["); for (int i = 0; i < SplituserWords.size(); i++) { sb.append(SplituserWords.get(i)); if (i != SplituserWords.size() - 1) { sb.append(","); } } sb.append("]"); System.out.println(sb.toString());
方法2:使用StringJoiner(Java 8+)
更简洁的拼接方式:
StringJoiner joiner = new StringJoiner(",", "[", "]"); for (String word : SplituserWords) { joiner.add(word); } System.out.println(joiner.toString());
方法3:Stream API一行搞定(Java 8+)
import java.util.stream.Collectors; // ... String result = SplituserWords.stream().collect(Collectors.joining(",", "[", "]")); System.out.println(result);
修正后的完整代码
import java.util.ArrayList; import java.util.Scanner; import java.util.StringJoiner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); ArrayList<String> userWords = new ArrayList<>(); ArrayList<String> SplituserWords = new ArrayList<>(); System.out.println("Please enter your phrase: "); userWords.add(input.nextLine()); for (int index = 0; index < userWords.size(); index++) { String[] split = userWords.get(index).split("\\s+"); for (String word : split) { SplituserWords.add(word); } } // 输出目标格式 StringJoiner joiner = new StringJoiner(",", "[", "]"); for (String word : SplituserWords) { joiner.add(word); } System.out.println(joiner.toString()); } }
内容的提问来源于stack exchange,提问作者Alexia
相关产品推荐
相关产品推荐

