0

如何从我的输出中删除 [ ]?

String omega_str[][]  ; 
StringBuilder sb=new StringBuilder();
         for (String[] row:omega_str)
                 sb.append(Arrays.toString(row));

    String text=sb.toString();  
        System.out.println("Text : "+text);

我的输出是:

[-0.06409677515180673][0.12516724483856012][-0.06188844693840026][0.1542289929525214][-0.06603595481351604][0.07823062287735344][0.10161817634744892]

预期产出

-0.06409677515180673 0.12516724483856012 -0.06188844693840026 0.1542289929525214 -0.06603595481351604 0.07823062287735344 0.10161817634744892 

这个怎么做?

4

9 回答 9

3

你不应该先生产一些东西,然后再移除它。是的[...]结果Arrays.toString。您最好遍历子数组并将值打印到字符串生成器。

顺便说一句,看起来您在子数组中只有一个值。(这提出了一个问题,如果你真的需要一个二维数组。)无论如何,如果你知道只有一个值,你甚至不需要循环,只需要

sb.append(' ');
sb.append(row[0]);
于 2013-11-05T11:12:55.807 回答
2

使用正则表达式replaceAll

 String str="[-0.06409677515180673][0.12516724483856012]"
            + "[-0.06188844693840026][0.1542289929525214]"
            + "[-0.06603595481351604][0.07823062287735344]"
            + "[0.10161817634744892]";
 str=str.replaceAll("[\\[|\\]]", " ");
 System.out.println(str);

输出:

-0.06409677515180673 0.12516724483856012 -0.06188844693840026 0.1542289929525214 -0.06603595481351604 0.078230622877317644 0.1489261

于 2013-11-05T11:17:58.523 回答
1

只需使用substring()

yourString.substring(1, yourString.length() - 1);
于 2013-11-05T11:10:17.087 回答
1

改变

String text=sb.toString();  

String text=sb.toString().replace('[', ' ').replace(']', ' ');  
于 2013-11-05T11:12:16.127 回答
1

[ ]在将其添加到 StringBuilder 之前跳过

String str= Arrays.toString(row);
str= str.substring(1,str.length()-1); 
sb.append(str);
于 2013-11-05T11:13:45.963 回答
1

调用 .toString() 到数组总是会产生这样的输出,所以我建议你在这样的数组上调用 .toString() 后用空字符串 "" 替换 "[]":

line.replace("[", "").replace("]", "");

但由于性能问题,它仅适用于短字符串。

于 2013-11-05T11:15:27.020 回答
1

尝试replaceAll使用转义字符:

String str = "[-0.06409677515180673][0.12516724483856012][-0.06188844693840026][0.1542289929525214][-0.06603595481351604][0.07823062287735344][0.10161817634744892]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");
于 2013-11-05T11:15:34.543 回答
1

这将为您解决问题。

for (String[] row:omega_str) {
  for(String val : row) {
      sb.append(val + " ");
  }
}

String text=sb.toString();  
System.out.println("Text : "+text);

正如@Ingo 建议的那样,不要产生你想删除的东西

于 2013-11-05T11:26:11.587 回答
1

我相信regex为了从方法中删除我不喜欢的东西而使用toString不是解决问题的好方法。我将简单地在您的类中创建一个具有好名称(即 print....)的方法,如下所示:

public static void printArray(String[][] array) {
        System.out.print("Text :");
        for (String[] row : array)
            for (String element : row)
                System.out.print(" " + element);
    }

并简单地调用:

printArray(omega_str);

使用此解决方案,您不必使用任何一个StringBuilder实例。

再见!

于 2013-11-05T11:56:01.147 回答