Maison > Java > javaDidacticiel > 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
Libérer: 2024-11-11 13:49:02
original
1032 Les gens l'ont consulté

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
Copier après la connexion

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]
Copier après la connexion

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);
Copier après la connexion

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]
Copier après la connexion

  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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal