List<string> test = new List<string>();
test.Add("test's");
test.Add("test");
test.Add("test's more");
string s = string.Format("'{0}'", string.Join("','", test));
maintenant le s est 'test's','test','test's more'
mais je dois remplacer les guillemets intérieurs par 2 guillemets simples
comme ceci: 'test''s','test','test''s more'
mise à jour: je l’ai obtenu comme ci-dessous, mais je préférerais une méthode plus propre si possible.
string s = string.Format("`{0}`", string.Join("`,`", test)).Replace("'", "''").Replace("`", "'");
Cela devrait fonctionner:
List<string> test = new List<string>();
test.Add("test's");
test.Add("test");
test.Add("test's more");
string s = string.Join("','", test.Select(i => i.Replace("'", "''")));
Et si vous voulez vraiment tout mettre entre guillemets simples:
string s = string.Format("'{0}'", string.Join("','", test.Select(i => i.Replace("'", "''"))));
Cela peut être plus facile que d'utiliser string.replace
string s = "'" + String.Join("','", test) + "'";
Essaye ça:
string s = string.Join(",", test.Select(x => string.Format("'{0}'", x.Replace("'", "''"))));
A propos, il n'y a pas d'apostrophe dans les "tests" - les apostrophes ne sont pas utilisés pour les pluriels .
Cela ne convient pas à tout le monde, mais j'aime bien créer des extensions d'assistance pour ce type de tâches et les placer dans un espace de noms "utilitaire":
public static class ListExtensions
{
public static void AddDoubleQuoted(this List<string> list, string input)
{
input = input.Replace("'", "''");
list.Add(input);
}
}
List<string> test = new List<string>();
test.AddDoubleQuoted("test's");
test.AddDoubleQuoted("test");
test.AddDoubleQuoted("test's more");
string s = string.Format("'{0}'", string.Join("','", test));
Vous pouvez toujours encoder des guillemets avant de construire votre chaîne.