从字符串中删除[]

时间:2013-11-05 11:07:55

标签: java stringbuilder

如何从输出中删除[]?

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 

怎么做?

9 个答案:

答案 0 :(得分:3)

你不应该先生产东西,然后将其移除。 [...]Arrays.toString的结果。最好循环遍历子数组并将值打印到字符串构建器。

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

sb.append(' ');
sb.append(row[0]);

答案 1 :(得分: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.07823062287735344 0.10161817634744892

答案 2 :(得分:1)

只需使用substring()

yourString.substring(1, yourString.length() - 1);

答案 3 :(得分:1)

更改

String text=sb.toString();  

String text=sb.toString().replace('[', ' ').replace(']', ' ');  

答案 4 :(得分:1)

在将其添加到StringBuilder

之前跳过[ ]
String str= Arrays.toString(row);
str= str.substring(1,str.length()-1); 
sb.append(str);

答案 5 :(得分:1)

将.toString()调用到一个数组将始终生成这样的输出,所以我建议你在这样的数组上调用.toString()之后用空字符串“”替换“[]”:

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

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

答案 6 :(得分:1)

尝试使用转义字符replaceAll

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

答案 7 :(得分:1)

这将为你做到这一点。

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

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

因为@Ingo建议不要生成你想要删除的东西

答案 8 :(得分:1)

我认为使用regextoString方法中移除我不喜欢的内容并不是解决问题的好方法。 我将简单地在你的班级中创建一个具有良好名称(即打印....)的方法,如下所示:

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实例。

侨!