-1

重複の可能性:
Javaのsplit()メソッドは、最後に空の文字列を削除しますか?

ファイルの内容を読み取ったり、データベースにデータをアップロードしたりするなどの要件があります。ファイルの内容は区切り文字'|'で区切られます このような

4000|name|state|city|zip||country|||address||

「|」の間にデータがない特定の列にnull値を設定することもできます。たとえば'||' zipと国の間。私の問題はstring.split( "//"、'|')がnull値の中間を取り、null値を要素と見なして配列を返すことです。しかし、末尾の'||' アフターアドレスは考慮されていません。上記の例で使用したように、string.split( "//"、'|')を使用すると、配列サイズ11の文字列配列要素を取得しますが、10しか取得しません。最後のnullは取得されません。誰かが解決策を手伝ってもらえますか?

4

2 に答える 2

4

クラス内で通常のsplit(String, int)メソッドを使用するだけです。String

String line = "4000|name|state|city|zip||country|||address||";
String data[] = line.split("\\|", -1); // escaped, because of regular expressions

マイナス1は、文字列が必要に応じて分割されることを示す規則です。

于 2012-07-11T20:21:18.237 に答える
0

はい、分割を使用することは明らかですが、このオプションも検討できます。

string.indexOf( "|"、indexToStartFrom)を使用しないのはなぜですか?少し面倒ですが、正規表現についてあまり考えなくても確実に機能します。


または、商用に適したライブラリOpenCsvhttp : //opencsv.sourceforge.net/があります。Apache2.0ライセンス

于 2012-07-11T20:32:14.570 に答える