Maison > Java > javaDidacticiel > Comment tokeniser des chaînes avec des espaces, à l'exclusion des sous-chaînes citées en Java ?

Comment tokeniser des chaînes avec des espaces, à l'exclusion des sous-chaînes citées en Java ?

Mary-Kate Olsen
Libérer: 2024-11-20 15:01:17
original
563 Les gens l'ont consulté

How to Tokenize Strings with Spaces, Excluding Quoted Substrings in Java?

Tokenisation de chaînes avec des espaces, exclusion des sous-chaînes entre guillemets en Java

Séparer une chaîne en fonction d'espaces peut être simple, mais que se passerait-il si certaines parties de la chaîne est entre guillemets et doit être traitée comme un seul jeton ? En Java, vous pouvez réaliser ce fractionnement nuancé à l'aide d'expressions régulières.

Pour gérer ce scénario, l'approche suivante peut être utilisée :

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

L'expression régulière utilisée ici divise efficacement la chaîne en jetons basés sur des espaces, mais il identifie également les sous-chaînes entre guillemets. En capturant ces sous-chaînes citées sous forme de jetons uniques, nous pouvons garantir que des expressions telles que "Bienvenue en Inde" restent intactes.

L'expression régulière peut être comprise comme suit :

  • [^" ] : correspond à tout caractère qui n'est pas un guillemet double (").
  • S* : correspond à zéro ou plusieurs caractères autres que des espaces. caractères.
  • | : Le symbole pipe indique une condition OU.
  • ". ?" : Correspond à un guillemet double, suivi d'un ou plusieurs caractères (y compris les espaces), suivi d'un guillemet double .
  • s* : correspond à zéro ou plusieurs caractères d'espacement.

Cela nous permet de gérer efficacement les chaînes complexes avec des phrases entre guillemets. La liste résultante contient des jetons qui représentent des mots individuels ou des phrases citées, comme requis dans l'exemple fourni.

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!

source:php.cn
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