【问题标题】:Print array without brackets and commas打印不带括号和逗号的数组
【发布时间】:2022-01-10 13:02:52
【问题描述】:

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

如何打印不带括号和逗号的数组?该数组包含斜线,并在猜到正确字母时被一一替换。

我正在使用ArrayList 类的常用.toString() 函数,我的输出格式如下:[ 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());

任何帮助将不胜感激。

【问题讨论】:

  • List 接口上的 toString() 方法实际上只是用于调试和日志记录。你不应该用它来向用户展示输出。

标签: java android arrays list collections


【解决方案1】:

用空格替换括号和逗号。

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

【讨论】:

  • 右括号的替换方法调用错误地包含左括号。但否则它会起作用。
  • 只是不要将包含括号和逗号的元素放在列表中。
  • 由于上述评论,这不应该得到如此高的评价。
【解决方案2】:

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

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

(顺便说一下,我个人不会调用变量publicArray,因为它实际上不是一个数组。)

【讨论】:

    【解决方案3】:

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

    TextUtils.join("",array);
    

    【讨论】:

    • 这是 Android 上下文的最佳方式。快速简单。
    • TextUtils 也采用 Iterable
    • 对于 Android,这是最好的答案,该方法同时接受数组和列表。
    【解决方案4】:

    第一

    StringUtils.join(array, "");

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

    编辑

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

    【讨论】:

    • StringUtils 在我看来是更干净的选项。 +1
    • 作为奖励StringUtils 不需要字符串数组,它适用于整数、双精度、对象等。
    【解决方案5】:

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

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

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

    对于不同类型的数组,应将其转换为 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()));
    

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

    【讨论】:

      【解决方案6】:

      如果你使用Java8或以上,你可以使用with stream() with native。

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

      参考文献

      【讨论】:

        【解决方案7】:

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

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

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

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

        希望这是有用的...:-)

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

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

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

            哪个打印:
            HiHelloCheersGreetings


            查看更多:Javascript Join - Use Join to Make an Array into a String in Javascript

            【讨论】:

            • 问题是关于Java的
            • 这在 java.. ["this","stuff"].join(","); =“这个,东西”
            【解决方案10】:

            只需用您的数组初始化一个String 对象

            String s=new String(array);
            

            【讨论】:

              猜你喜欢
              • 2022-10-13
              • 2017-09-11
              • 2021-08-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-02-23
              • 1970-01-01
              相关资源
              最近更新 更多