2010-06-17 12 views
6

Ich habe eine Zeichenfolge, die durch Kommas getrennte Werte hat. Wie kann ich zählen, wie viele Elemente in der Zeichenfolge durch Komma getrennt sind? z.B. folgende Zeichenkette hat 4 Elementezählen Sie die Elemente in Zeichenfolge

string = "1,2,3,4";

+0

Sehr ähnlich http://stackoverflow.com/questions/881085/count-the-number-of-occurances-of-a-character-in-a-string-in-javascript obwohl keine genaue Duplikat. –

Antwort

10

myString.split (''). Länge

1

erste geteilten, und dann die Elemente in dem Array zählen. Wie folgt aus:

"1,2,3,4".split(/,/).length; 
+0

Es ist nicht falsch, es ist einfach eine andere Definition. Leere Zeichenfolge ist auch ein Wert;) Versuchen Sie ",," zum Beispiel. – Wolph

+0

Ja, aber würden Sie sagen, dass in den meisten Anwendungsfällen eine einzelne leere Zeichenfolge als eine Liste von 1 Wert betrachtet würde? Also .. die Anzahl der Artikel in "a" entspricht der Anzahl der Artikel in ""? – SuitedSloth

+0

Ich würde nicht am meisten, aber auf jeden Fall oft genug sagen. Wenn es keinen Wert gibt, möchten Sie die Funktion wahrscheinlich überhaupt nicht ausführen – Wolph

4
var mystring = "1,2,3,4"; 
var elements = mystring.split(','); 
return elements.length; 
0

Alle Antworten darauf hindeutet, etwas Gleichwertiges zu myString.split(',').length zu falschen Ergebnissen führen könnten, weil:

"".split(',').length == 1 

Ein leerer String ist nicht das, was Sie wollen, kann eine Liste von betrachten 1 Artikel.

Eine intuitive und dennoch prägnante Umsetzung wäre:

myString.split(',').filter((i) => i.length).length 

Diese nicht 0-Zeichenkette als Elemente in der Liste nicht berücksichtigt.

"".split(',').filter((i) => i.length).length 
0 

"1".split(',').filter((i) => i.length).length 
1 

"1,2,3".split(',').filter((i) => i.length).length 
3 

",,,,,".split(',').filter((i) => i.length).length 
0 
+0

Beachten Sie, dass die Browserunterstützung für Pfeilfunktionen immer noch begrenzt ist: http://caniuse.com/#feat=arrow-functions Vorläufig würde ich empfehlen eine reguläre Funktion statt – Wolph

+0

Sie haben Recht @Wolph. Sieht so aus, als hätte IE11 heute weltweit noch 12% Marktanteil. – SuitedSloth

Verwandte Themen