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));
jetzt ist das s 'test's','test','test's more'
aber ich muss die inneren Anführungszeichen durch 2 einfache Anführungszeichen ersetzen
wie folgt: 'test''s','test','test''s more'
update: Ich habe es wie unten beschrieben, aber ich würde es vorziehen, wenn möglich sauberer zu sein.
string s = string.Format("`{0}`", string.Join("`,`", test)).Replace("'", "''").Replace("`", "'");
Das sollte funktionieren:
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("'", "''")));
Und wenn Sie wirklich das Ganze in einfache Anführungszeichen setzen wollen:
string s = string.Format("'{0}'", string.Join("','", test.Select(i => i.Replace("'", "''"))));
Dies ist möglicherweise einfacher als die Verwendung von string.replace
.
string s = "'" + String.Join("','", test) + "'";
Versuche dies:
string s = string.Join(",", test.Select(x => string.Format("'{0}'", x.Replace("'", "''"))));
Übrigens gibt es keinen Apostroph in "Tests" - Apostrophe werden nicht für Pluralformen verwendet.
Es ist nicht jedermanns Geschmack, aber ich mag es, Helfererweiterungen für diese Art von Aufgaben zu erstellen und sie in einen "Namespace" für Dienstprogramme zu setzen:
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));
Sie können Anführungszeichen immer kodieren, bevor Sie Ihre Zeichenfolge erstellen.