Maison  >  Article  >  Java  >  Comment gérer correctement les espaces lors de la lecture de fichiers CSV avec Scanner() en Java ?

Comment gérer correctement les espaces lors de la lecture de fichiers CSV avec Scanner() en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 16:36:26847parcourir

How to Handle Spaces Correctly When Reading CSV Files with Scanner() in Java?

Lire CSV avec Scanner()

Lors de la lecture de fichiers CSV à l'aide de la classe Scanner de Java, il est crucial de gérer correctement les espaces. Le problème décrit ici, où le texte avec des espaces est déplacé vers la ligne suivante, provient du comportement par défaut du Scanner.

Comportement attendu :

Les fichiers CSV contiennent souvent des champs. avec des espaces, comme des adresses. Une fois analysé, chaque champ doit être capturé comme une seule unité, même s'il contient des espaces.

Comportement réel :

Par défaut, le scanner utilise les espaces comme délimiteur, ce qui signifie qu'il interprète les espaces comme des séparateurs de champs. Par conséquent, tout texte comportant des espaces est divisé en plusieurs champs et placé sur des lignes distinctes.

Solution :

Pour résoudre ce problème, vous pouvez utiliser la méthode useDelimiter de Scanner pour spécifier un délimiteur différent. Étant donné que les fichiers CSV utilisent généralement des virgules comme séparateurs de champs, vous pouvez utiliser le code suivant :

<code class="java">Scanner inputStream = new Scanner(file).useDelimiter(",");</code>

Cela demandera à Scanner de traiter les virgules comme séparateurs de champs, préservant ainsi l'intégrité des champs avec des espaces.

Exemple :

En utilisant ce code corrigé, les données CSV fournies dans la question seront analysées comme suit :

first,last,email,address 1, address 2
john,smith,[email&#160;protected],123 St. Street,
Jane,Smith,[email&#160;protected],4455 Roger Cir,apt 2

Chaque champ, y compris ceux avec des espaces , sera capturé comme une seule unité, ce qui donnera le résultat souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn