Java の Scanner クラスを使用して CSV ファイルを読み取る場合、スペースを正しく処理することが重要です。ここで説明する、スペースを含むテキストが次の行に移動される問題は、スキャナーのデフォルトの動作から発生します。
期待される動作:
CSV ファイルにはフィールドが含まれることがよくあります。住所などのスペースを含む。解析されるとき、スペースが含まれている場合でも、各フィールドは単一の単位としてキャプチャされる必要があります。
実際の動作:
デフォルトでは、スキャナは区切り文字として空白を使用します。つまり、スペースをフィールド区切り文字として解釈します。その結果、スペースを含むテキストは複数のフィールドに分割され、別々の行に配置されます。
解決策:
この問題を解決するには、Scanner の useDelimiter メソッドを使用できます。別の区切り文字を指定します。 CSV ファイルは通常、フィールド区切り文字としてカンマを使用するため、次のコードを使用できます:
<code class="java">Scanner inputStream = new Scanner(file).useDelimiter(",");</code>
これにより、Scanner にカンマをフィールド区切り文字として扱うように指示し、スペースを含むフィールドの整合性が維持されます。
例:
この修正されたコードを使用すると、質問で提供された CSV データは次のように解析されます:
first,last,email,address 1, address 2 john,smith,[email protected],123 St. Street, Jane,Smith,[email protected],4455 Roger Cir,apt 2
各フィールド (スペースを含むフィールドも含む) 、単一のユニットとしてキャプチャされ、目的の出力が得られます。
以上がJavaのScanner()でCSVファイルを読み取るときにスペースを正しく処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。