2017-08-14 3 views
1

J'ai un problème à trouver le bon moyen d'obtenir seulement city1, city 2 et la distance sans le "km", en utilisant un scanner et un délimiteur. J'ai besoin d'avoir le texte en gras. Chaîne (exemple):Java scanner plusieurs/plusieurs conditions de délimiteur

ville1, pays; city2, pays; 145 km

Mon Delimitar jusqu'à présent parce que je ne sais vraiment pas:

scanner.useDelimiter(";"); 

J'ai aussi essayé d'utiliser string.split ("") sans succès. Dois-je d'abord diviser en 3 parties sur le ";" et faire un nouveau délimiteur pour chaque partie? Ou y a-t-il un moyen plus facile?

Merci à l'avance

(Modifier pour expliquer la différence à un autre poste: Je l'ai essayé avec regex, sans chance, je aussi besoin de diviser la chaîne sur plusieurs endroits sur des personnages différents, je ne demanderais pas.. une question si je suis en mesure de le résoudre avec un autre post)

+0

double possible de [? Comment puis-je utiliser un séparateur en Java Scanner] (https://stackoverflow.com/questions/28766377/ how-do-i-use-a-delimiter-in-java-scanner) – tima

+0

@tima, non pas vraiment –

Répondre

0

Vous pouvez utiliser une combinaison de Scanner et String#split:

String source = "city1, country; city2, country; 145 km"; 
Scanner scanner = new Scanner(source); 
scanner.useDelimiter(";"); 

while (scanner.hasNext()) { 
    // trim() removes leading and trailing whitespace 
    String line = scanner.next().trim(); 
    // split the line on either ',' or a space 
    String[] split = line.split(",|\\s"); 
    // print the first word 
    System.out.println(split[0]); 
} 
0

vous pouvez essayer avec String.split()

String data = "city1, country; city2, country; 145 km"; 
String city1Val = data.split(";")[0].split(",")[0]; 
String city1Con = data.split(";")[0].split(",")[1]; 
String city2Val = data.split(";")[1].split(",")[0]; 
String city2Con = data.split(";")[1].split(",")[1]; 
String distance = data.split(";")[2]; 

. Remarque: si vous voulez la distance que le numéro, essayez ce qui suit,

distance = distance.replaceAll("[^\\d.]", ""); 
+0

Merci pour votre réponse. L'autre réponse correspondait mieux pour moi. Pour la distance j'ai déjà utilisé une sous-chaîne: distance.substring (0, distance.length() - 3). –