Hello,
Sur le projet sur lequel je bosse, il est possible de générer des exports CSV. On peut configurer pas mal d'options, dont le séparateur de texte, qui peut prendre la forme de simple ou de double quotes, ou rien. Donc on peut avoir ceci (cas 1) :
ou (cas 2)"aaa";"bbb";"ccc";
ou (cas 3)'aaa';'bbb';'ccc';
Dans le cas où on utilise les double quotes (cas 1), le RFC 4180 spécifie que si le texte contient un double quote, il faut l'échapper en rajoutant un double quote avant comme ceci :aaa;bbb;ccc;
En revanche rien n'est mentionné concernant les simple quotes (cas 2)."aaa""aaaa";
Cela signifie-t-il que les simple quotes ne devraient pas être utilisées en tant que délimiteur de texte ?
Faut-il utiliser le même principe pour échapper les simple quotes que pour échapper les double quotes ?
J'utilise le code suivant pour échapper les double quotes :
Etant donné que j'ai un tableau de char pour stocker les caractères à échapper, comment y inclure le simple quote ?
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 private const string DOUBLE_QUOTE = "\""; private const string ESCAPED_DOUBLE_QUOTE = "\"\""; private static char[] CHARS_TO_ESCAPE = { ',', '"', ';' }; public static string Escape(string text) { if (text.Contains(DOUBLE_QUOTE)) { text = text.Replace(DOUBLE_QUOTE, ESCAPED_DOUBLE_QUOTE); } if (text.IndexOfAny(CHARS_TO_ESCAPE) > -1) { text = DOUBLE_QUOTE + text + DOUBLE_QUOTE; } return text; }
Partager