Diviser des chaînes sur des espaces, conserver les sous-chaînes entre guillemets en Java
Diviser une chaîne sur des espaces peut être simple, mais cela devient plus complexe lorsqu'elle est citée les sous-chaînes doivent être traitées comme un seul jeton. Explorons comment y parvenir en Java.
Énoncé du problème :
Comment pouvons-nous diviser la chaîne suivante en espaces, en considérant que les sous-chaînes entre guillemets restent comme une seule unité ?
Location "Welcome to india" Bangalore Channai "IT city" Mysore
La sortie souhaitée doit être stockée dans une liste de tableaux, en préservant les sous-chaînes citées :
[Location, "Welcome to india", Bangalore, Channai, "IT city", Mysore]
Solution :
En utilisant des expressions, nous pouvons définir un modèle qui correspond aux sous-chaînes qui sont soit des caractères non-espaces ("1S") ou des sous-chaînes entre guillemets (""(. ?)"" ). Le modèle autorise en outre des caractères d'espacement facultatifs ("s") après les correspondances.
String str = "Location \"Welcome to india\" Bangalore " + "Channai \"IT city\" Mysore"; List<String> list = new ArrayList<>(); Matcher m = Pattern.compile("([^\"]\S*|\".+?\")\s*").matcher(str); while (m.find()) list.add(m.group(1)); // Add .replace("\"", "") to remove surrounding quotes. System.out.println(list);
Dans cette solution :
Sortie :
[Location, "Welcome to india", Bangalore, Channai, "IT city", Mysore]
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!