2016-03-28 5 views
0

どのように私はsucessfully(空の値を含む)、セミコロンによって区切られている文字列内の値の数を数えることができますか?.splitと文字列の値の数をカウント(「;」)

私は、例えば、この文字列があります。

;;C;D;E;F;G 

が正しい値の数は「7」になりますが、私は.splitを使用する場合には、理由は、空の値で、間違った番号を返します。

どうすればこの問題を解決できますか?

+3

'のSystem.out.println( ";; C、D、E、F、G" .split( ";")の長さ。);私には、' 'プリント7'。 – Pshemo

+1

それは私にも '7'を表示します。確かに、要素を数える方法に間違いがあります。 –

+0

上記の2つの同義語。私も7の長さを取得します。要素を数えるあなたの方法は何ですか? – kevingreen

答えて

3

例を回避するために

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 

のような負の制限を使用します。

+3

あなたの読書力は強いです;) –

2

String#split()は、例えば、セパレータは、テキストの末尾にある場合にのみあるため、空の値の間違った番号を返す返すことがあります。 ";;C;D;E;F;G;;"。あなたの質問からその使用text.split(regex, -1)

関連する問題