J'ai besoin de diviser une chaîne de caractères comme ceci, sur des points-virgules. Mais je ne veux pas couper sur les points-virgules qui sont à l'intérieur d'une chaîne (' ou "). Je n'analyse pas un fichier, mais une simple chaîne de caractères sans saut de ligne.
part 1;"this is ; part 2;";'this is ; part 3';part 4;this "is ; part" 5
Le résultat devrait être :
- partie 1
- "c'est ; partie 2 ;"
- "Ceci est ; partie 3
- partie 4
- ceci "est ; partie" 5
Je suppose que cela peut être fait avec une regex, mais sinon, je suis ouvert à une autre approche.
0 votes
Avez-vous d'autres exemples ? Ou y a-t-il d'autres types de "pièces" ?
0 votes
Je ne pense pas. Je veux diviser sur les points-virgules et ignorer les points-virgules à l'intérieur des guillemets. Je prendrais en considération toute solution qui ne fait pas exactement que ce n'est pas valable. Pouvez-vous penser à d'autres cas qui pourraient briser les solutions fournies jusqu'à présent ?
0 votes
Les guillemets peuvent-ils être échappés à l'intérieur d'une chaîne de caractères ?
"this is a \"quoted\" string"
? Si c'est le cas, une solution de type regex va être extrêmement difficile, voire impossible.0 votes
Non, je n'ai pas à soutenir cette affaire.
0 votes
Il manque un point-virgule à la deuxième ligne de l'exemple de sortie. C'est correct ci-dessous dans les réponses. Il devrait être :
"this is ; part 2;"
0 votes
@Harvey : en effet. maintenant corrigé. Merci.