78 Stimmen

In C#: Anführungszeichen um eine Zeichenfolge in einer kommagetrennten Liste von Zeichenfolgen hinzufügen

Darauf gibt es wahrscheinlich eine einfache Antwort, aber ich habe wohl nicht genug Kaffee getrunken, um es selbst herauszufinden:

Wenn ich eine durch Komma getrennte Zeichenfolge wie:

string list = "Fred,Sam,Mike,Sarah";

Wie würde jedes Element erhalten und fügen Sie Anführungszeichen um es und stecken Sie es wieder in eine Zeichenfolge wie diese:

string newList = "'Fred','Sam','Mike','Sarah'";

Ich gehe davon aus, dass die Iteration über jeden einzelnen ein Anfang wäre, aber danach bin ich nicht mehr weitergekommen.

Eine Lösung, die hässlich ist:

int number = 0;
string newList = "";
foreach (string item in list.Split(new char[] {','}))
{
    if (number > 0)
    {
        newList = newList + "," + "'" + item + "'";
    }
    else
    {
        newList = "'" + item + "'";
    }
    number++;
}

0voto

bdukes Punkte 144019

Die C#-Implementierung von @ PhiLho Die JavaScript-Lösung für reguläre Ausdrücke sieht in etwa wie folgt aus:

Regex regex = new Regex(
    @"\b",
    RegexOptions.ECMAScript
    | RegexOptions.Compiled
    );

string list = "Fred,Sam,Mike,Sarah";
string newList = regex.Replace(list,"'");

0voto

bruno conde Punkte 47059

Mein "weniger anspruchsvoller" Ansatz ... Ich nehme an, es ist immer eine gute Praxis, einen StringBuilder zu verwenden, weil die Liste sehr groß sein kann.

string list = "Fred,Sam,Mike,Sarah";
StringBuilder sb = new StringBuilder();

string[] listArray = list.Split(new char[] { ',' });

for (int i = 0; i < listArray.Length; i++)
{
    sb.Append("'").Append(listArray[i]).Append("'");
    if (i != (listArray.Length - 1))
        sb.Append(",");
}
string newList = sb.ToString();
Console.WriteLine(newList);

0voto

Ryan Punkte 7525

Werden Sie eine Menge CSV-Dateien verarbeiten? Wenn ja, sollten Sie eine Bibliothek für diese Aufgabe verwenden. Erfinden Sie das Rad nicht neu. Leider habe ich keine Bibliothek gefunden, die so einfach ist wie die CSV-Bibliothek von Python, aber ich habe gesehen FileHelpers (kostenlos) geprüft im MSDN Magazine und es sieht ziemlich gut aus. Wahrscheinlich gibt es auch andere kostenlose Bibliotheken da draußen. Es hängt alles davon ab, wie viel Sie verarbeiten werden. Oft wächst und wächst es, bis man merkt, dass es besser ist, eine Bibliothek zu verwenden.

0voto

KenB Punkte 31

Hier ist eine C# 6 Lösung mit String Interpolation.

string newList = string.Join(",", list.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                       .Select(x => $"'{x}'")
                       .ToList());

Oder, wenn Sie die C# 5 Option mit String.Format:

string newList = string.Join(",", list.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                       .Select(x => String.Format("'{0}'", x))
                       .ToList());

Die Verwendung von StringSplitOptions entfernt alle leeren Werte, so dass Sie keine leeren Anführungszeichen haben, falls Sie das vermeiden wollen.

0voto

Thivan Mydeen Punkte 1201

Ich habe eine neue Lösung für dieses Problem gefunden

Ich binden eine Liste durch ausgewählte Elemente Werte aus dem Raster mit Linq, nach, dass eine durch Komma getrennte Zeichenfolge für jede Zeichenfolge Sammlungen mit String.Join() Eigenschaften hinzugefügt.

String str1 = String.Empty;
String str2 = String.Empty;              
//str1 = String.Join(",", values); if you use this method,result "X,Y,Z"
     str1 =String.Join("'" + "," + "'", values);
//The result of str1 is "X','Y','Z"
     str2 = str1.Insert(0, "'").Insert(str1.Length+1, "'");
//The result of str2 is 'X','Y','Z'

Ich hoffe, dies ist hilfreich !!!!!!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X