1

私はこれを持っています

String str = "a,pnp,a|pnp,lab2|pnp,a|pnp,lab2,utr,utr";
String[] strings = str.split("|");

このコードは「|」の周りで分割されません 文字、代わりにそれはのようにすべての文字を分割します

strings[0] == "a";
strings[1] == ",";

等々。

これを機能させる方法

strings[0] == "a,pnp,a"
strings[1] == "pnp,lab2"
...
4

5 に答える 5

6

split()正規表現を取り、正規|表現OR用に予約されているため、エスケープする必要があります。

String[] strings = str.split("\\|");

またはさらに良い:

String[] strings = str.split(Pattern.quote("|"));
于 2012-04-15T06:50:19.707 に答える
1

|他の答えが示しているように、あなたはシンボルを逃れることができます。個人的には、 Guavaをダウンロードして代わりに使用することをお勧めしますSplitter。それは1つのステートメントにとってはやり過ぎと見なされるかもしれませんが、私の経験では、Guavaのさまざまな部分で読みやすくすることができなかったまれなプロジェクトです。

可能であれば、配列の代わりにリストを個人的に使用するので、次のようにします。

private static final Splitter PIPE_SPLITTER = Splitter.on('|');
...

// Or an immutable list if you don't plan on changing it afterwards
List<String> strings = Lists.newArrayList(PIPE_SPLITTER.split(str));

正規表現に過度にアレルギーがある可能性もありますが、正規表現を保証するパターンを実際に使用しようとしない限り、正規表現を処理するAPIを使用するのは本当に好きではありません。

于 2012-04-15T06:58:29.733 に答える
1

使用する

String[] strings = str.split("\\|");
于 2012-04-15T06:48:47.633 に答える
0

|キャラクターをエスケープするオプションに追加するだけです:

String[] strings = str.split("[|]");
于 2012-04-15T07:05:37.907 に答える
0

public String [] split(String regex)

指定された正規表現の一致を中心にこの文字列を分割します。

このメソッドは、指定された式とゼロの制限引数を使用して2引数のsplitメソッドを呼び出すかのように機能します。したがって、末尾の空の文字列は結果の配列に含まれません。

したがって、String [] arrayOfStrings = str.split( "\ |");を試してください。

于 2012-04-15T06:56:50.227 に答える