webentwicklung-frage-antwort-db.com.de

Fügen Sie die Liste der Zeichenfolgen durch Kommas getrennt und in einfache Anführungszeichen eingeschlossen ein

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("`", "'");
28
gangt

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("'", "''"))));
50
Jay Riggs

Dies ist möglicherweise einfacher als die Verwendung von string.replace.

string s = "'" + String.Join("','", test) + "'";
20
CraigH

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.

3

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));
2
davecoulter

Sie können Anführungszeichen immer kodieren, bevor Sie Ihre Zeichenfolge erstellen. 

1
ika