打印不带括号和逗号的数组

问题描述 投票:0回答:14

我正在将 Hangman 游戏移植到 Android,但遇到了一些问题。最初的 Java 程序使用控制台,所以现在我必须以某种方式美化输出,使其适合我的 Android 布局。

如何打印没有括号和逗号的数组?该数组包含斜杠,当猜到正确的字母时,该数组将被一一替换。

我正在使用

.toString()
类的常用
ArrayList
函数,我的输出格式如下:
[ a, n, d, r, o, i, d ]
。我希望它只是将数组打印为单个
String

我使用这段代码填充数组:

List<String> publicArray = new ArrayList<>();

for (int i = 0; i < secretWordLength; i++) {
    hiddenArray.add(secretWord.substring(i, i + 1));
    publicArray.add("-");
}

我这样打印:

TextView currentWordView = (TextView) findViewById(R.id.CurrentWord);
currentWordView.setText(publicArray.toString());
java android arrays list collections
14个回答
116
投票

用空格替换括号和逗号。

String formattedString = myArrayList.toString()
    .replace(",", "")  //remove the commas
    .replace("[", "")  //remove the right bracket
    .replace("]", "")  //remove the left bracket
    .trim();           //remove trailing spaces from partially initialized arrays

65
投票

基本上,不要使用

ArrayList.toString()
- 自己构建字符串。例如:

StringBuilder builder = new StringBuilder();
for (String value : publicArray) {
    builder.append(value);
}
String text = builder.toString();

(顺便说一句,当它实际上不是数组时,我个人不会调用该变量

publicArray
。)


26
投票

对于 Android,您可以使用

join
 类中的 
android.text.TextUtils
方法,例如:

TextUtils.join("",array);

20
投票

首先

StringUtils.join(array, "");

第二

Arrays.asList(arr).toString().substring(1).replaceFirst("]", "").replace(", ", "")

编辑

可能是最好的一个:

Arrays.toString(arr)


15
投票

使用 Java 8 或更高版本,您可以使用

String.join
,它提供相同的功能:

返回一个由 CharSequence 元素的副本与指定分隔符的副本连接在一起组成的新字符串

String[] array = new String[] { "a", "n", "d", "r", "o", "i", "d" };
String joined = String.join("", array); //returns "android"

对于不同类型的数组,应该将其转换为字符串数组或可迭代的字符序列:

int[] numbers = { 1, 2, 3, 4, 5, 6, 7 };

//both of the following return "1234567"
String joinedNumbers = String.join("",
        Arrays.stream(numbers).mapToObj(String::valueOf).toArray(n -> new String[n]));
String joinedNumbers2 = String.join("",
        Arrays.stream(numbers).mapToObj(String::valueOf).collect(Collectors.toList()));

String.join
的第一个参数是分隔符,可以进行相应更改。


12
投票

如果你使用Java8或以上版本,你可以与native一起使用stream()。

publicArray.stream()
        .map(Object::toString)
        .collect(Collectors.joining(" "));

参考文献


5
投票

移除支架最简单的解决方案是,

  1. 使用 .toString() 方法将数组列表转换为字符串。

  2. 使用 String.substring(1,strLen-1)。(其中 strLen 是 arraylist 转换后字符串的长度)。

  3. 结果字符串是去掉括号的字符串。


3
投票

我用过 Arrays.toString(array_name).replace("[","").replace("]","").replace(",",""); 正如我从上面的一些评论中看到的那样,而且我还在逗号后面添加了一个额外的空格字符(部分 .replace(", ","")),因为当我打印出 a 中的每个值时新的一行,仍然有空格字符移动单词。它解决了我的问题。


2
投票

我使用 join() 函数,例如:

i=new Array("Hi", "Hello", "Cheers", "Greetings");
i=i.join("");

哪个打印:

HiHelloCheersGreetings


查看更多: Javascript Join - 在 Javascript 中使用 Join 将数组转换为字符串


1
投票
String[] students = {"John", "Kelly", "Leah"};

System.out.println(Arrays.toString(students).replace("[", "").replace("]", " "));

//output: John, Kelly, Leah

1
投票

您可以使用为 Java 8 及更高版本的流提供的reduce 方法。注意,您必须首先映射到字符串,以允许在reduce 运算符内部进行串联。

publicArray.stream().map(String::valueOf).reduce((a, b) -> a + " " + b).get();

0
投票

我正在尝试 ArrayList,我还想在打印输出后删除方括号,我找到了一个解决方案。我刚刚做了一个循环来打印数组列表并使用列表方法“ myList.get(index) ”,它就像一个魅力。

请参阅下面我的代码和输出:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        ArrayList mylist = new ArrayList();
        Scanner scan = new Scanner(System.in);

        for(int i = 0; i < 5; i++) {
            System.out.println("Enter Value " + i + " to add: ");
            mylist.add(scan.nextLine());
        }
        System.out.println("=======================");

        for(int j = 0; j < 5; j++) {
            System.out.print(mylist.get(j));
        }
}
}

输出

输入值 0 进行添加:

1

输入要添加的值 1:

2

输入要添加的值 2:

3

输入值 3 进行添加:

4

输入值 4 进行添加:

5

========================

12345


0
投票
List.of("21312", "32323").toString()
        .replaceAll("[]\\[]", "");

-4
投票

只需用数组初始化一个

String
对象

String s=new String(array);
© www.soinside.com 2019 - 2024. All rights reserved.