2010-06-06 39 views
0

Je dois diviser cette ligne de ligne dans chaque ligne, je dois obtenir le troisième mot (nom du film) mais comme vous voyez le délimiteur est un grand caractère vide dans certains cas sa petite comme avant les chiffres à la fin ou sa grande comme devant les numéros à l'avant.que délimiter à utiliser lors de la séparation Chaîne

J'ai essayé d'utiliser la fente de chaîne avec ("") regex, et aussi \t mais obtenir l'erreur hors des limites.

400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587 
400115309 Brian_Aherne A_Night_to_Remember_(1943_film) 7952 

Est-ce que quelqu'un a eu le même problème?

Répondre

0

La solution était str.split("\\t");

3

Avez-vous essayé de diviser tous les espaces comme suit: line.split("\\s+"). La méthode split prend en charge les expressions régulières.

éditer: désolé, devrait être \\s en effet.

Le code suivant

String line = "400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587"; 
System.out.println(Arrays.toString(line.split("\\s+"))); 

de retour avec [400115305, Lionel_Atwill, The_Song_of_Songs_(1933_film), 7587] sur ma machine (Java SE 6).

+0

Si cela devait lire 'line.spluit ("\\ s")'? – Armand

+0

Celui-ci ne fonctionnera pas. Un bon devrait être "\\ +" – vodkhang

+0

J'ai testé à nouveau, \\ s ne fonctionnera pas non plus – vodkhang

0

Ce code devrait fonctionner. Un bon devrait être s.split("\\ +");

public class Main { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     String s = "400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587"; 
     String [] s2 = s.split("\\ +"); 
     for (String string : s2) { 
      System.out.println("string = " + string); 
     } 
    } 
} 
0

Ce code:

String s = "400115305 Lionel_Atwill The_Song_of_Songs_(1933_film) 7587\r\n" 
     + "400115309 Brian_Aherne A_Night_to_Remember_(1943_film) 7952"; 

String[] lines = s.split("\\r\\n"); // split lines 
for (String line : lines) { 
    String[] items = line.split("[\\s\u00A0]+"); // split by whitespace OR   
    System.out.println("Film=" + items[2]); 
} 

a la sortie suivante:

Film=The_Song_of_Songs_(1933_film) 
Film=A_Night_to_Remember_(1943_film)