web-dev-qa-db-fra.com

Plusieurs délimiteurs dans la classe Scanner de Java

Comment utiliser la méthode useDelimiter() de la classe Scanner pour utiliser la virgule (,) et le caractère de nouvelle ligne (\ n) comme délimiteurs?

Je suis en train d'analyser du texte d'un fichier csv.

13
tomejuan
 Scanner s = new Scanner("hello, world \n hello world");
 s.useDelimiter(",|\\n");
 while(s.hasNext()){
          System.out.println(s.next());

 }

Sortie

hello
 world 
 hello world
16
Jigar Joshi

Que diriez-vous de useDelimiter(",|\\n");

7
Andrew White

useDelimiter prend un motif regex, donc ce serait quelque chose comme ",|\n"

1
adrianboimvaser

Jigar est absolument correct. Mais si cela ne fonctionne pas, essayez ",|\\r"

puisque la plupart des fichiers texte ont\r\n au lieu de\n

0
Orange

Utilisation des séparateurs de balayage pour les fichiers Excel - ne négligez pas la chose RegEx. Dans mon cas, le fichier Excel est délimité par '|'. J'ai passé beaucoup de temps à analyser les lignes à l'aide de scanner.useDelimiter ("|"), et récupéré caractère par caractère. Remplacer cela par scanner.useDelimiter ( "\\ |" ) a résolu mon problème! 

0
Gil Shapir