2

次のような文字列があります。 [item 1, item2, item3]

私の望む出力は次のとおりです。

item 1
item2
item3

私はこのコードを書きました:

String text = "[item 1, item2, item3]";
String[] text_output = text.split(", |\\[|\\]");
for(String item:text_output)
    fileOutStream.write(("\n"+item).getBytes());

私が得る出力は正しいですが、出力配列の最初の要素が空の文字列であるという違いがあります。私は何を間違っていますか?

4

3 に答える 3

3

[文字列をandで分割するように要求した]ため、システムはそれに従い、 の前の空白[を最初の要素と見なします。続行するには多くの方法があります。

  1. text.replaceAll("\\[|\\]", "")分割する前に使用します。
  2. 分割する前に、最初と最後の char の削除をハードコーディングしtext.substring(1, text.length()-1)ます。
  3. 負の一致の代わりにの一致を使用します。

    Pattern.compile("[^,\\[\\]]+").matcher().find()
    
于 2013-01-15T13:02:03.310 に答える
0

これは、分割しようとして、最初の文字が分割したい文字である場合に発生します。新しい配列を作成し、最初の要素 (null 要素) を選択しないようにする必要があります。

String[] text_output = text.substring(1).split(", |\\[|\\]");

最初の文字だけを削除したい場合は、それを使用すると、必要な出力が得られます。分割しようとすると、最初の文字が分割の 1 つであることに注意してください。

于 2013-01-15T13:02:46.273 に答える
0

最初は、使用して分割している空の文字列\\[であるため、最初の要素は[文字列にあります。最初の要素を無視してください。

于 2013-01-15T13:04:07.733 に答える