1. ホーム
  2. java

[解決済み] スキャナ vs. StringTokenizer vs. String.Split

2022-05-10 02:41:05

質問

Java の Scanner クラスについて学んだばかりですが、StringTokenizer や String.Split との比較/競合について考えています。StringTokenizerとString.Splitが文字列に対してのみ動作することは知っていますが、なぜScannerを文字列に対して使用したいと思うのでしょうか?Scannerは分割のためのワンストップショッピングを意図しているだけなのでしょうか?

どのように解決するのですか?

本来はコースに合わせた馬なのです。

  • Scanner は、文字列をパースしてさまざまなタイプのデータを取り出す必要がある場合のために設計されています。非常に柔軟ですが、特定の式で区切られた文字列の配列を単純に取得するための最もシンプルなAPIを提供するものではないことは間違いありません。
  • String.split()Pattern.split() は、後者を行うための簡単な構文を与えてくれますが、本質的にはそれがすべてです。出来上がった文字列を解析したり、特定のトークンによって区切り文字を途中で変更したりしたい場合、これらはその助けにはなりません。
  • StringTokenizer よりもさらに制限されます。 String.split() また、使い方が少し難しい。これは基本的に、固定した部分文字列で区切られたトークンを取り出すために設計されています。この制限のために、これは String.split() . (私の の比較 String.split()StringTokenizer .) また、正規表現 API よりも前に開発されたものであり、その中で String.split() はその一部である。

私のタイミングを見ればわかると思いますが String.split() はまだトークン化できます。 数千の文字列を数ミリ秒で処理できる 一般的なマシンで さらに StringTokenizer は文字列の配列として出力されるからです。このような場合 Enumeration で提供されるような StringTokenizer というのは、ほとんどの場合、構文的にうるさすぎるからです。この点から StringTokenizer は、今となってはちょっともったいないので String.split() .