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。サブ配列をループして、値を文字列ビルダーに出力することをお勧めします。

ところで、サブ配列には単一の値しかないようです。(これは、本当に 2 次元配列が必要かどうかという問題を提起します。) とにかく、値が 1 つしかないことがわかっている場合は、ループさえ必要ありません。

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.07823062287735344 0.106916

于 2013-11-05T11:17:58.523 に答える
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 に答える
1

[ ]StringBuilder に追加する前にスキップする

String str= Arrays.toString(row);
str= str.substring(1,str.length()-1); 
sb.append(str);
于 2013-11-05T11:13:45.963 に答える
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

単純に次を使用します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

配列に対して .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 に答える