Formatterで作成されたStringでString.split()正規表現を使用しようとしています

StackOverflow https://stackoverflow.com/questions/637907

質問

こんにちは、私はここの新参者です

次のマトリックスを出力するオープンソースライブラリ(Matrix Toolkits for Java)の次のコードを使用しています

  1000       1000                   5
     3          5  1.000000000000e+00

1000,1000,5を返すString splitを実行しようとしています

String [] parts = str.trim()。split(" \\ s"); を使用してみました

しかし、\ sを文字列トークンとして使用するのは間違っているようですが、代わりに何を使用すべきか考えていますか?

どうもありがとう!

public String toString() {
        // Output into coordinate format. Indices start from 1 instead of 0
        Formatter out = new Formatter();

        out.format("%10d %10d %19d\n", numRows, numColumns, Matrices
                .cardinality(this));

        for (MatrixEntry e : this)
            if (e.get() != 0)
                out.format("%10d %10d % .12e\n", e.row() + 1, e.column() + 1, e
                        .get());

        return out.toString();
    }
役に立ちましたか?

解決

単一のスペースだけでなく、任意の数のスペースで分割する必要があります。つまり、「+」を追加します。次のような正規表現に:

String[] parts = str.trim().split("\\s+"); 

他のヒント

StringTokenizer も必要ですやりたいことができるようになります。

String s = "  1000       1000                   5";
java.util.StringTokenizer st = new java.util.StringTokenizer(s);
while (st.hasMoreTokens()) {
    System.out.println(st.nextToken());
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top