Maison  >  Article  >  développement back-end  >  Comment diviser des chaînes avec plusieurs délimiteurs ?

Comment diviser des chaînes avec plusieurs délimiteurs ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 04:03:03422parcourir

How to Split Strings with Multiple Delimiters?

Diviser des chaînes avec plusieurs délimiteurs [Dupliquer]

Dans le traitement de texte, il est souvent nécessaire de diviser une chaîne en mots ou jetons individuels. Alors que les techniques standard de fractionnement de chaînes excellent dans la gestion des délimiteurs uniques, la tâche devient plus difficile avec plusieurs délimiteurs.

Problème :

Étant donné une chaîne et un ensemble de délimiteurs, comment pouvons-nous diviser la chaîne en mots tout en considérant tous les éléments spécifiés délimiteurs ?

Solution :

Pour diviser efficacement une chaîne à l'aide de plusieurs délimiteurs, nous exploitons une combinaison d'opérations de flux de chaîne et de sous-chaîne. Voici une version modifiée du code fourni :

std::stringstream stringStream(inputString);
std::string line;
while(std::getline(stringStream, line)) {
    std::size_t prev = 0, pos;
    auto delimiters = " ';";  // Customize delimiter string here
    while ((pos = line.find_first_of(delimiters, prev)) != std::string::npos) {
        if (pos > prev)
            wordVector.push_back(line.substr(prev, pos-prev));
        prev = pos+1;
    }
    if (prev < line.length())
        wordVector.push_back(line.substr(prev, std::string::npos));
}

Explication :

  • Nous parcourons chaque ligne de la chaîne d'entrée en utilisant std::getline.
  • Pour chaque ligne, nous utilisons std::find_first_of pour localiser la position du premier délimiteur dans le line.
  • Si un délimiteur est trouvé, nous ajoutons la sous-chaîne entre le délimiteur précédent et le délimiteur actuel au wordVector.
  • Nous mettons ensuite à jour prev pour pointer vers le caractère après le délimiteur.
  • Après avoir traité toute la ligne, nous ajoutons la sous-chaîne restante au wordVector si elle n'est pas vide.

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