[解決済み] Java 文字列の分割で空の値を削除
質問
セパレータを使用して値を分割しようとしています。 しかし、次のような驚くべき結果が出ています。
String data = "5|6|7||8|9||";
String[] split = data.split("\\|");
System.out.println(split.length);
8つの値を取得することを期待しています。 [5,6,7,empty,8,9,empty,empty] です。 しかし、私は6つの値しか得ていません。
何かアイディアと修正方法があれば教えてください。EMPTY値がどこに来ても、それは配列の中にあるべきものです。
解決方法は?
split(delimiter)
は、デフォルトで結果の配列から末尾の空文字列を削除します。この機構を無効にするには、オーバーロードされたバージョンの
split(delimiter, limit)
と共に
limit
のように負の値に設定します。
String[] split = data.split("\\|", -1);
もう少し詳しく。
split(regex)
の結果を返します。
split(regex, 0)
であり
ドキュメント
このメソッドには、次のようなものがあります (強調)。
は、その
limit
パラメータはパターンを適用する回数を制御するので、 結果の配列の長さに影響します。
もし、制限値
n
は
ゼロより大きい
の場合、パターンは最大 n - 1 回適用され、配列の長さは n よりも長くはならず、配列の最後のエントリには最後にマッチした区切り文字以降のすべての入力が含まれます。
もし
n
は
ノンポジ
の場合、パターンは可能な限り何度も適用され、配列は任意の長さを持つことができます。
もし
n
は
ゼロ
の場合、そのパターンは可能な限り何度も適用され、配列は任意の長さを持つことができ、そして
空文字列は破棄されます。
.
例外 :
末尾の空文字列を削除することは意味があります。
そのような空文字列が分割メカニズムによって作成された場合のみです。
. そのため
"".split(anything)
を分割することができないので
""
という結果になります。
[""]
の配列になります。
ここではsplitが起こらなかったから起こるのであって、だから
""
が空であるにもかかわらず、末尾に
オリジナル
の文字列であって、空文字列ではありません。
作成
分割処理によるものです。
関連
-
Maven Pluginの実行がライフサイクル設定の対象外であるエラーの解決
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Javaで文字列を分割する方法
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
エラー java.util.NoSuchElementException
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
javaでよく使われる英単語
-
org.glassfish.jersey.servlet.ServletContainer
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
[解決済み] Javaで文字列を配列に分割する [重複]。