打印阵列没有括号和逗号

SQD*_*QDK 40 java arrays collections android list

我正在将一个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("-");
}
Run Code Online (Sandbox Code Playgroud)

我打印它像这样:

TextView currentWordView = (TextView) findViewById(R.id.CurrentWord);
currentWordView.setText(publicArray.toString());
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

use*_*041 98

用空格替换括号和逗号.

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
Run Code Online (Sandbox Code Playgroud)

  • 只是不要将包含方括号和逗号的元素放在列表中。 (2认同)

Jon*_*eet 52

基本上,不要使用ArrayList.toString()- 为自己构建字符串.例如:

StringBuilder builder = new StringBuilder();
for (String value : publicArray) {
    builder.append(value);
}
String text = builder.toString();
Run Code Online (Sandbox Code Playgroud)

(publicArray顺便说一下,当它实际上不是一个数组时,我不会调用变量.)


ica*_*ell 20

您可以使用android.text.TextUtils类中的join方法,如:

TextUtils.join("",array);
Run Code Online (Sandbox Code Playgroud)

  • 这是 Android 上下文的最佳方式。快速简便。 (2认同)

Ale*_*exR 15

第一

StringUtils.join(array, "");

第二

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

编辑

可能是最好的一个: Arrays.toString(arr)

  • 在我看来,StringUtils 是更干净的选择。+1 (3认同)

ern*_*t_k 7

在Java 8或更高版本中,您可以使用String.join提供相同功能的:

返回一个新的String,该字符串由CharSequence元素的副本和指定定界符的副本组成

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

对于不同类型的数组,应该将其转换为String数组或char序列Iterable:

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()));
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*vid 5

删除括号的最简单的解决方案是,

  1. 使用 .toString() 方法将 arraylist 转换为字符串。

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

  3. 结果字符串是删除括号的字符串。


Nam*_*amo 5

如果您使用Java8或更高版本,则可以将stream()与native一起使用。

publicArray.stream()
        .map(Object::toString)
        .collect(Collectors.joining(" "));
Run Code Online (Sandbox Code Playgroud)

参考文献