90 votes

Caractère de délimitation le moins utilisé dans un texte normal < ASCII 128

Pour des raisons de codage qui vous horrifieraient (je suis trop gêné pour le dire), je dois stocker un certain nombre d'éléments de texte dans une seule chaîne.

Je vais les délimiter en utilisant un caractère.

Quel est le meilleur caractère à utiliser pour cela, c'est-à-dire celui qui a le moins de chances d'apparaître dans le texte ? Il doit être imprimable et probablement inférieur à 128 en ASCII pour éviter les problèmes de localisation.

14voto

Alex Fort Points 9961

Et si vous utilisiez un format de type CSV ? Les caractères peuvent être échappés dans un format CSV standard, et il existe déjà de nombreux analyseurs syntaxiques.

9voto

Jay Points 20373

Pouvez-vous utiliser le symbole du tuyau ? C'est généralement le délimiteur le plus courant après les chaînes délimitées par des virgules ou des tabulations. Il est peu probable que la plupart des textes contiennent un pipe, et ord('|') renvoie 124 pour moi, ce qui semble donc correspondre à vos besoins.

9voto

Mohammad Amin Points 21

Pour une évasion rapide, j'utilise des trucs comme ça : disons que vous voulez concaténer str1, str2 et str3 ce que je fais est :

delimitedStr=str1.Replace("@","@a").Replace("|","@p")+"|"+str2.Replace("@","@a").Replace("|","@p")+"|"+str3.Replace("@","@a").Replace("|","@p");

puis à retrouver l'usage initial :

splitStr=delimitedStr.Split("|".ToCharArray());
str1=splitStr[0].Replace("@p","|").Replace("@a","@");
str2=splitStr[1].Replace("@p","|").Replace("@a","@");
str3=splitStr[2].Replace("@p","|").Replace("@a","@");

note : l'ordre des remplacements est important

il est incassable et facile à mettre en œuvre

3voto

Joe Points 17829

Nous utilisons l'ascii 0x7f qui est pseudo-imprimable et qui n'apparaît pratiquement jamais dans l'usage courant.

2voto

Jackson Points 3828

Cela va dépendre de la nature de votre texte dans une certaine mesure, mais une barre verticale 0x7C n'apparaît pas très souvent dans un texte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X