Ich möchte ein Array oder eine Liste von Ints in eine durch Kommas getrennte Zeichenfolge umwandeln, wie folgt:
string myFunction(List<int> a) {
return string.Join(",", a);
}
String.Join ist jedoch nur List<string>
der zweite Parameter. Was ist der beste Weg, dies zu tun?
Antworten:
Der beste Weg ist ein Upgrade auf .NET 4.0, bei dem eine Überlastung vorliegt, die genau das tut, was Sie möchten:
String.Join<T>(String, IEnumerable<T>)
Wenn Sie kein Upgrade durchführen können, können Sie mit Select und ToArray denselben Effekt erzielen.
quelle
ToArray
Methode von verwendenList<T>
?int
.Eine skalierbare und sichere Implementierung eines generischen Enumerable-String-Joins für .NET 3.5. Die Verwendung von Iteratoren ist so, dass der Wert der Verknüpfungszeichenfolge nicht am Ende der Zeichenfolge hängen bleibt. Es funktioniert korrekt mit 0, 1 und mehr Elementen:
Verwendung:
Genießen!
quelle
String.Join(String, String[])
diese aufgerufen werden können. Das einzige, was ich sagen würde, ist, dass es ungewöhnlich ist, diese Methode als Erweiterung zu sehen,String
im Gegensatz zuIEnumerable<String>
- ich nenne sie immer am Ende einer langen Kette von Erweiterungsmethodenaufrufen..NET 2.0:
quelle
Diese Antwort ist für Sie, wenn Sie sich noch nicht in die Tiefen von .NET 4.0 wagen möchten.
String.Join () verkettet alle Elemente eines String-Arrays unter Verwendung des angegebenen Trennzeichens zwischen den einzelnen Elementen.
Die Syntax lautet
Anstatt Ihre Liste der Ints an die Join-Methode zu übergeben, empfehle ich, zuerst ein Array von Zeichenfolgen aufzubauen.
Folgendes schlage ich vor:
quelle
intArray
jedoch nicht erforderlich.List<int>
ist indizierbar und hat eineCount
Eigenschaft, wodurch die Konvertierung in ein Array überflüssig wird. Möglicherweise möchten Sie das Verknüpfungszeichen auch zu einem Parameter machen, anstatt es fest in die Methode zu codieren.Hatte eine ähnliche Erweiterungsmethode, die ich daran geändert habe
und du benutzt es so
.NET 3.5
quelle
IEnumerable<T>
hat bereits eineJoin
Methode, und diese neue Methode führt eine völlig andere Operation aus, wodurch ihre Verwendung nicht intuitiv ist. Zweitens, wenn Sie wurden mit dieser Methode erstellen gehen, gehen Sie vor und machen es allgemein anwendbar.Verwenden von .NET 4.0
quelle
In .NET verfügt die Listenklasse über eine
.ToArray()
Methode. So etwas könnte funktionieren:Ref: List <T> Methods (MSDN)
quelle
answer from 2010
besagt bereits, dass, wieToString
bei astring.Join
.