String split方法の実現過程の図解


この文章は主にString split方法の実現過程の図解を紹介しています。例コードを通して紹介された非常に詳細で、皆さんの学習や仕事に対して一定の参考学習価値を持っています。必要な友達は下記を参考にしてください。
Stringのsplit方法はみんながよく知らないと信じて、多かれ少なかれすべて使ったことがあります。文字列を一つの配列に変えました。しかし、このような簡単な方法です。中にも注意しなければならない、深くない小さな穴があります。
ローカルテストコードは下図のようになります。

図1
みんなはsplit 1とsplit 3の長さが私達の予想に合うことを発見することができて、しかしsplit 2は長さが5なべきで、しかし実際の長さは依然として4です。皆さんはこのような状況に遭遇した時、
Stringをすぐに当てることができるはずのこのsplit方法は一つのマッチ分割だけでなく、他の論理処理もしています。例えば、ここで最後の空き要素を除去するべきです。
の操作を行います。このような予想があるなら、ソースコードを見てトレースしてみましょう。

図2
この方法は重荷重の方法を呼び出しました。最初のパラメータは変わりませんでした。二つ目のパラメータはlimitから0を伝えました。引き続き追跡します。

図3
頭が大きくて、面倒くさいので、全然見られなくなりました。
考えを変えて、debugはちょっと見て、この最後の空っぽな元素はどこで濾過されて落ちたのかを見てみて、試みてやはり事件の発生地を発見しました。

図4
ここのリストには全部の5つの要素が保存されていますが、下のwhileサイクルでは、どの元素の長さが0であるかを尾部から見て回ることができます。
一つは0で、一つは長さを減らします。最初の空いていない要素に触れるまで。このwhileサイクルを行ったら、前の要素を切り取ります。
行列に変換して返します。
以上の簡単な分析により、Stringのsplit方法に対して、文字列の末尾がちょうど文字にマッチすると、自動的に最後の文字が表示されます。
空の要素は削除されますが、文字列のヘッダに空の要素があると影響を受けません。
多く2つの文を言って、実はlimitパラメータについて、何回かテストすれば、このパラメータは戻りのデータの最大長さを制限することができます。テストコードは以下の通りです。

図5
limit値が伝わると、自動的に最後の空の要素が取れなくなります。具体的な原因は図4のソースコードです。limitは0でないとifの中のwhile循環を進まないからです。
このような穴に対して、避ける良い方法は何もなくて、1つは自分の知識の面を拡大するので、2つは多く総括を積むのです。がんばってください
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。