どのように私はsucessfully(空の値を含む)、セミコロンによって区切られている文字列内の値の数を数えることができますか?.splitと文字列の値の数をカウント(「;」)
私は、例えば、この文字列があります。
;;C;D;E;F;G
が正しい値の数は「7」になりますが、私は.split
を使用する場合には、理由は、空の値で、間違った番号を返します。
どうすればこの問題を解決できますか?
どのように私はsucessfully(空の値を含む)、セミコロンによって区切られている文字列内の値の数を数えることができますか?.splitと文字列の値の数をカウント(「;」)
私は、例えば、この文字列があります。
;;C;D;E;F;G
が正しい値の数は「7」になりますが、私は.split
を使用する場合には、理由は、空の値で、間違った番号を返します。
どうすればこの問題を解決できますか?
例を回避するために
System.out.println(";;C;D;E;F;G".split(";").length);
プリント7
ので、正常に動作します。空要素はもが7
を返します
System.out.println(";;C;D;E;F;G;;".split(";").length);
のようなあなたの文字列の末尾にあるとき
しかし、問題が表示されることがあります。何故ですか? split(regex)
はのsplit(regex,limit)
バージョンを使用し、0
に設定されているためです。この制限は、後続の空の要素が削除される分割の動作を表します。
あなたが空の要素を末尾に削除したくない場合は、
今9
を印刷します
System.out.println(";;C;D;E;F;G;;".split(";", -1).length);
// ^^-negative limit
のような負の制限を使用します。
あなたの読書力は強いです;) –
String#split()
は、例えば、セパレータは、テキストの末尾にある場合にのみあるため、空の値の間違った番号を返す返すことがあります。 ";;C;D;E;F;G;;"
。あなたの質問からその使用text.split(regex, -1)
'のSystem.out.println( ";; C、D、E、F、G" .split( ";")の長さ。);私には、' 'プリント7'。 – Pshemo
それは私にも '7'を表示します。確かに、要素を数える方法に間違いがあります。 –
上記の2つの同義語。私も7の長さを取得します。要素を数えるあなたの方法は何ですか? – kevingreen