In C #: Fügen Sie Anführungszeichen um Zeichenfolge in einer durch Kommas getrennten Liste von Zeichenfolgen hinzu
Diese hat vermutlich eine einfache Antwort, aber muss ich nicht haben genug Kaffee, um es herauszufinden, auf meine eigene:
Hätte ich ein Komma getrennte Zeichenfolge wie:
string list = "Fred,Sam,Mike,Sarah";
Bekommen würde, wie jedes element, und fügen Sie Anführungszeichen um ihn herum und kleben Sie es wieder in eine Zeichenfolge wie diese:
string newList = "'Fred','Sam','Mike','Sarah'";
Ich gehe davon aus, dass die Iteration über jede wäre ein Anfang, aber ich habe mir ratlos nach.
One-Lösung, die ist hässlich:
int number = 0;
string newList = "";
foreach (string item in list.Split(new char[] {','}))
{
if (number > 0)
{
newList = newList + "," + "'" + item + "'";
}
else
{
newList = "'" + item + "'";
}
number++;
}
InformationsquelleAutor der Frage Bob Wintemberg | 2008-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Danke für die Kommentare, die ich verpasst hatte, die äußeren Anführungszeichen.
Natürlich.. wenn die Quelle war eine leere Zeichenfolge ist, würden Sie wollen, dass die zusätzlichen Anführungszeichen um ihn herum oder nicht ? Und was ist, wenn der input war ein Haufen Leerzeichen... ? Ich meine, zu geben, eine 100% vollständige Lösung, ich würde wahrscheinlich Fragen, für eine Liste der unit-tests, aber ich hoffe, dass mein Bauchgefühl beantwortet deine Kern-Frage.
Update: Ein LINQ-basierte alternative wurde auch vorgeschlagen (mit dem zusätzlichen Vorteil der Verwendung von String.Format und daher keine sorgen darüber zu machen führende/nachfolgende Zitate):
InformationsquelleAutor der Antwort FOR
Oder verwenden Sie LINQ, besonders mit einer version von String.Join unterstützt
IEnumerable<string>
...Gibt es eine Implementierung von JoinStrings anderswo auf DAMIT... ich werde mal schauen.
EDIT: Naja, es ist nicht ganz die JoinStrings ich dachte, so ist es hier:
Diesen Tagen
string.Join
hat eine generische überladung statt, obwohl, so könnten Sie nur nutzen:InformationsquelleAutor der Antwort Jon Skeet
InformationsquelleAutor der Antwort Tor Haugen
Folgenden Jon Skeet Beispiel oben, das ist was für mich gearbeitet. Ich hatte auch schon ein
List<String>
variable namens __Nachrichten so dies ist, was ich getan habe:InformationsquelleAutor der Antwort vcuankit
Ich denke, die einfachste Sache wäre
Split
und dannJoin
.InformationsquelleAutor der Antwort Jacob Carpenter
Kann ich nicht schreiben, der C# - code, aber diese einfache JavaScript-code ist wohl leicht anpassen:
Es nur ersetzen, Grenzen (Anfang/Ende des Strings, den übergang von der Wort-chars nicht die Interpunktion) von Apostroph.
InformationsquelleAutor der Antwort PhiLho
InformationsquelleAutor der Antwort RickL
Wenn Sie mit JSON folgende Funktion helfen würde
InformationsquelleAutor der Antwort Atish Narlawar
Meine Anforderungen:
Endet mit carriage-return und line-feed.
string.Join(",", lCol.Select(s => s == null ? null : ("\"" + s.Ersetzen("\"", "\"\"") + "\""))) + "\r\n";
InformationsquelleAutor der Antwort MikeTeeVee
Die C# - Implementierung von @PhiLho's regulären JavaScript-Ausdruck Lösung sieht in etwa wie folgt:
InformationsquelleAutor der Antwort bdukes
Mein "weniger anspruchsvoll" - Ansatz ...
Ich nehme an, es ist immer eine gute Praxis, verwenden Sie ein StringBuilder-Objekt, da die Liste sehr umfangreich sein kann.
InformationsquelleAutor der Antwort bruno conde
Gehst du zu der Verarbeitung eine Menge von CSV? Wenn dem so ist, sollten Sie auch erwägen, eine Bibliothek, dies zu tun. Das Rad nicht neu erfinden. Leider habe ich nicht gefunden eine Bibliothek ganz so einfach wie Python CSV-Bibliothek, aber ich habe gesehen, FileHelpers (frei) überprüft bei MSDN Magazine und es sieht ziemlich gut aus. Es gibt wahrscheinlich auch andere freie Bibliotheken, die auch dort. Es hängt alles davon ab, wie viel Verarbeitung werden Sie tun, wenn. Oft es wächst und wächst, bis Sie merken, dass Sie wäre besser dran mit einer Bibliothek.
InformationsquelleAutor der Antwort Ryan
Hier ist ein C# - 6-Lösung mit String-Interpolation.
Oder, wenn Sie lieber die C# 5 option mit String.Format:
Mithilfe der StringSplitOptions wird, entfernen Sie alle leeren Werte, so dass Sie gewonnen ' T haben keine leeren Anführungszeichen, wenn es das ist etwas, das Sie versuchen zu vermeiden.
InformationsquelleAutor der Antwort KenB
Habe ich eine neue Lösung gefunden für dieses problem
Ich Binde eine Liste von ausgewählten Elementen Werte aus dem raster, die Verwendung von linq, danach Hinzugefügt, durch Komma getrennte Zeichenfolge für jede string-Sammlungen mit Hilfe von String.Join() Eigenschaften.
Ich hoffe, dass dies hilfreich !!!!!!
InformationsquelleAutor der Antwort Thivan Mydeen
Für Menschen, die sich lieben Erweiterung Methoden wie mich, hier ist es:
InformationsquelleAutor der Antwort Dheeraj Palagiri