Verbessert str.split(',')
Die einfache str.split(',')
hat nicht viel Grips. Hier sind einige Upgrades für verschiedene Bedürfnisse. Sie können die Funktionalität nach Herzenslust anpassen.
const str = "a, b,c, d ,e ,f,,g"
const num = "1, 2,3, 4 ,5 ,6,,7.495"
const mix = "a, 2,3, d ,5 ,f,,7.495,g"
console.log( str.split(',')
) // spaces NOT trimmed, empty values included
// ["a", " b", "c", " d ", "e ", "f", "", "g"]
console.log( str.split(/[ ,]+/)
) // spaces trimmed, empty values skipped
// ["a", "b", "c", "d", "e", "f", "g"]
console.log( str.split(/\s*,\s*/)
) // spaces trimmed, empty values NOT skipped
// ["a", "b", "c", "d", "e", "f", "", "g"]
console.log( num.split(',').map(Number)
) // numbers, empty values default to zero
// [1, 2, 3, 4, 5, 6, 0, 7.495]
console.log( num.split(/[ ,]+/).map(Number)
) // numbers, skips empty values
// [1, 2, 3, 4, 5, 6, 7.495]
console.log( mix.split(/\s*,\s*/)
.map(x => (x === '') ? '' : (isNaN(Number(x)) ? x : Number(x)) )
) // mixed values, empty values included
// ["a", 2, 3, "d", 5, "f", "", 7.495, "g"]
Verwendung von JSON.parse
Es mag sich wie ein kleiner Hack anfühlen, aber es ist einfach und wird von den meisten Javascript-Maschinen optimiert.
Es hat noch einige andere Vorteile, wie zum Beispiel die Unterstützung von verschachtelten Listen. Aber es gibt auch Nachteile, wie z. B. die Anforderung, dass die Eingabe richtig formatiertes JSON sein muss.
Durch die Verwendung von string.replace
ähnlich wie bei der Verwendung von string.split
oben, können Sie die Eingabe korrigieren. In den ersten beiden Beispielen unten passe ich an, wie ich leere Werte behandeln möchte:
const num = "1, 2,3, 4 ,5 ,6,,7.495"
const mix = "a, 2,3, d ,5 ,f,7.495,g"
console.log( JSON.parse('['+num.replace(/,\s*,/,',0,')+']')
) // numbers, empty values default to zero
// [1, 2, 3, 4, 5, 6, 0, 7.495]
console.log( JSON.parse('['+num.replace(/,\s*,/,',')+']')
) // numbers, skips empty values
// [1, 2, 3, 4, 5, 6, 7.495]
console.log( JSON.parse('['+mix.replace(/(^|,)\s*([^,]*[^0-9, ][^,]*?)\s*(?=,|$)/g,'$1"$2"')+']')
) // mixed values, will ERROR on empty values
// ["a", 2, 3, "d", 5, "f", "7.495", "g"]
7 Stimmen
Ich wollte nur anmerken, dass dafür kein Jquery erforderlich ist, da dies Teil von Javascript selbst ist.
2 Stimmen
Mögliche Duplikate von Wie kann ich eine CSV-Zeichenfolge mit Javascript parsen?
4 Stimmen
Was die Duplikate betrifft, so sind diese 18 Monate älter als die Frage, auf die verwiesen wird. Wenn überhaupt, ist die andere Frage nicht nur ein Duplikat, sondern bietet aufgrund der Regex-Anforderung eine extrem komplizierte Lösung für ein sehr einfaches Problem
48 Stimmen
Einfach.
string.split(',');
5 Stimmen
Ich bin mir nicht sicher, warum dies als "zu lokalisiert" markiert ist. Die Aufspaltung von Zeichenketten ist ein lot y ist allgemein auf das weltweite Publikum im Internet anwendbar ist (was durch die Tatsache bewiesen wird, dass meine Antwort immer noch regelmäßig hochgestuft wird). Ich bezweifle, dass noch 4 andere Leute auftauchen und das Thema erneut aufmachen werden, aber trotzdem. Seltsam.
0 Stimmen
Bewährte Verfahren zur Unterstützung aller Arten von Saiten. Siehe hier stackoverflow.com/a/32657055/2632619