繁体   English   中英

将数组转换为字符串,不带括号,逗号或空格

[英]Convert array to string without brackets, commas, or spaces

我正在尝试将单个字母的数组列表(例如{“a”,“b”,“c”})转换为一个字符串,该字符串是由所有这些字母组合而成 - 按顺序 - 来创建一个单词。 因此,通过上面的示例,数组将是{“a”,“b”,“c”},而单词将是“abc”。 我目前正在使用以下代码:

ArrayList<String> arr = new ArrayList<String>();
String str = "a"; //this is just to define it before hand with a random value
*after a lot more code*
str = Arrays.toString(arr.toArray()).replace("[", "").replace("]", "").replace(",", "");
System.out.println(str);

这工作 - 我得到我的结果没有括号或逗号,但由于我用空格替换逗号和括号,我得到“abc”而不是“abc”。 有没有办法改变这一点,所以我可以用纯粹的空格而不是空格替换逗号? 我想用一种更好的方式来表达这一点就是完全删除逗号和括号。

非常感谢您的帮助。

您可以使用StreamCollectors.joining()类的

String[] arr = { "a", "b", "c" };
System.out.println(Stream.of(arr).collect(Collectors.joining()));

哪些产出(按要求)

abc

假设您要从输入字符串中删除不是字母字符的任何内容,您可以使用:

    StringBuilder sb = new StringBuilder(); 

    for (int i = 0; i < input.length(); i++) {
        if (Character.isAlphabetic(input.charAt(i))) {
            sb.append(input.charAt(i));
        }
    } 

    return sb.toString();
String[] sa = new String[] {"a", "b", "c"};
System.out.println(String.join("", sa));

Stream API在JDK1.8中定义

你打电话时:

System.out.println(stringOne);

真正发生的是System.out.println隐式调用数组的toString()方法来获取其字符串表示:

System.out.println(stringOne.toString());

Array.toString()的实现返回数组元素(或者更确切地说,数组元素的toString()表示),逗号分隔。

如果您想要不同的表示,您有两种选择。 您可以创建一个扩展基数组类的新数组类,并覆盖toString()方法以返回所需的字符串表示形式。 这可能不是你想做的,但它是一个选择。

或者,您可以自己处理数组并构造所需的字符串表示形式。 @Elliott Frisch使用Java 8中提供的Streams API显示了一种很好的方法。

您可以通过多种方式获得相同的结果。 这是一个快速而又脏的for循环实现:

StringBuilder arrayAsString = new StringBuilder();
String delimiter = "";
for(String element : arr) {
    arrayAsString.append(delimiter).append(element);
    delimiter = ","; // I hate this idiom but it's handy for joining strings when you don't have a better .join() method available.
}

System.out.println(arrayAsString.toString()); // calling toString() explicitly for clarity, but it's not necessary

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM