Maison  >  Article  >  Java  >  Comment diviser une chaîne en espaces tout en préservant les sous-chaînes citées en Java ?

Comment diviser une chaîne en espaces tout en préservant les sous-chaînes citées en Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-11 13:49:02979parcourir

How to Split a String on Spaces While Preserving Quoted Substrings in Java?

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 :

  • Le modèle est compilé et utilisé pour faire correspondre jetons dans la chaîne.
  • Les jetons correspondants sont ajoutés à la liste du tableau.
  • La suppression facultative des guillemets environnants peut être obtenue en utilisant .replace(""", "") après avoir ajouté des jetons à la liste.

Sortie :

[Location, "Welcome  to india", Bangalore, Channai, "IT city", Mysore]

  1. "

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