Wie kann ich eine durch Kommas getrennte Zeichenfolge in ein Array konvertieren?

Lesezeit: 6 Minuten

Benutzer-Avatar
Blankmann

Ich habe eine durch Kommas getrennte Zeichenfolge, die ich in ein Array konvertieren möchte, damit ich sie durchlaufen kann.

Gibt es etwas eingebautes, um dies zu tun?

Ich habe zum Beispiel diese Zeichenfolge

var str = "January,February,March,April,May,June,July,August,September,October,November,December";

Jetzt möchte ich dies durch das Komma teilen und dann in einem Array speichern.

  • Ich wollte nur anmerken, dass dies kein jquery erfordert, dies ist Teil von Javascript selbst.

    – Chris

    21. Juni 2011 um 22:51 Uhr

  • mögliches Duplikat von Wie kann ich eine CSV-Zeichenfolge mit Javascript analysieren?

    – gcochard

    14. Januar 2013 um 17:28 Uhr

  • In Bezug auf Duplikate: Dies liegt 18 Monate vor der referenzierten Frage. Wenn überhaupt, ist der andere nicht nur ein Dupe, sondern bietet aufgrund der Regex-Anforderung eine äußerst komplizierte Lösung für ein sehr einfaches Problem

    – Nicht ich

    14. Januar 2013 um 17:30 Uhr

  • Einfach. string.split(',');

    – Braden Best

    19. Januar 2013 um 5:56 Uhr

  • Ich bin mir nicht sicher, warum dies als “zu lokalisiert” gekennzeichnet ist. String-Splitting erscheint a vielund ist allgemein anwendbar auf das weltweite Publikum des Internets (was durch die Tatsache belegt wird, dass meine Antwort irgendwie immer noch regelmäßig positive Stimmen erhält). Ich bezweifle, dass 4 andere Leute vorbeikommen und es wieder öffnen werden, aber trotzdem. Seltsam.

    – Matchu

    22. Januar 2013 um 5:39 Uhr

Benutzer-Avatar
Matchu

var array = string.split(',');

MDN-Referenzmeistens hilfreich für das möglicherweise unerwartete Verhalten der limit Parameter. (Hinweis: "a,b,c".split(",", 2) kommt heraus ["a", "b"]nicht ["a", "b,c"].)

  • Kurz und bündig, schön, dieses JavaScript zu sehen string hat etwas den Reichtum des Java String.

    – Michael Shopsin

    19. Mai 2015 um 15:13 Uhr

  • Best Practice für die Unterstützung aller Arten von Zeichenfolgen. Siehe hier stackoverflow.com/a/32657055/2632619

    – Andi AR

    18. September 2015 um 16:46 Uhr

  • Während split funktioniert gut, wenn Sie sicher sind, dass Sie Elemente enthalten arraywenn Sie Daten von einem Server / einer Datenbank erwarten, werden Sie Probleme bekommen ''.split(',') hat ein length === 1 IE: ''.split(',') === ['']

    – Vlad Goran

    2. August 2016 um 15:49 Uhr


  • @MichaelShopsin und All, die Split-Funktion funktioniert nicht mit IE11, da sie sagt, dass die Eigenschaft ‘Split’ einer undefinierten oder Nullreferenz nicht abgerufen werden kann.

    – DLV

    16. Juli 2018 um 10:08 Uhr


  • @DLV das klingt nach einer neuen Frage, vielleicht sollten Sie sie stellen, nachdem Sie die IE-Fragen bereits auf StackOverflow überprüft haben.

    – Michael Shopsin

    16. Juli 2018 um 14:42 Uhr

Benutzer-Avatar
Pop

Achten Sie darauf, wenn Sie ganze Zahlen wie 1,2,3,4,5 anstreben. Wenn Sie beabsichtigen, die Elemente Ihres Arrays als Ganzzahlen und nicht als Zeichenfolgen zu verwenden, nachdem Sie die Zeichenfolge geteilt haben, sollten Sie in Betracht ziehen, sie in solche umzuwandeln.

var str = "1,2,3,4,5,6";
var temp = new Array();
// This will return an array with strings "1", "2", etc.
temp = str.split(",");

Hinzufügen einer Schleife wie dieser,

for (a in temp ) {
    temp[a] = parseInt(temp[a], 10); // Explicitly include base as per Álvaro's comment
}

gibt ein Array zurück, das Integer und keine Strings enthält.

  • Bitte beachten Sie, dass parseInt() versucht, die Basis zu erraten, es sei denn, Sie setzen sie explizit, was zu unerwarteten Ergebnissen führen kann, wenn es um führende Nullen geht ("001,002,003..."). Vergleichen parseInt('010') mit parseInt('010', 10).

    – Alvaro González

    14. Dezember 2010 um 16:04 Uhr


  • Ich würde Alvaros Kommentar mehr positiv bewerten, wenn ich könnte. Ich habe diese Lektion vor einiger Zeit gelernt und nie vergessen.

    – Antony Scott

    20. März 2013 um 22:20 Uhr

  • +1 Dieses Beispiel ist klarer und zeigt, dass String kein statisches Objekt ist, sondern tatsächlich die Variable, die der String ist.

    – K0D4

    10. Oktober 2013 um 20:11 Uhr

  • Das map Funktion kann verwendet werden, um die Ganzzahlanalyse in einer Zeile durchzuführen: str.split(',').map(parseInt)

    – Jud

    6. März 2014 um 21:12 Uhr

  • Dies ist nicht die effizienteste Lösung. Nach meinen Experimenten unter Chrome 49. JSON.parse(‘[‘ + str + ‘]’) ist 40 % schneller als diese Lösung.

    – Ja

    19. April 2016 um 18:41 Uhr


Benutzer-Avatar
Nur ich

Hmm, Split ist meiner Meinung nach gefährlich, da ein String immer ein Komma enthalten kann. Folgendes beachten:

var myArr = "a,b,c,d,e,f,g,','";
result = myArr.split(',');

Wie würden Sie das interpretieren? Und was tust du wollen das Ergebnis sein? Ein Array mit:

['a', 'b', 'c', 'd', 'e', 'f', 'g', '\'', '\''] or
['a', 'b', 'c', 'd', 'e', 'f', 'g', ',']

Selbst wenn Sie dem Komma entkommen, hätten Sie ein Problem.

Das habe ich schnell zusammengebastelt:

(function($) {
    $.extend({
        splitAttrString: function(theStr) {
            var attrs = [];

            var RefString = function(s) {
                this.value = s;
            };
            RefString.prototype.toString = function() {
                return this.value;
            };
            RefString.prototype.charAt = String.prototype.charAt;
            var data = new RefString(theStr);

            var getBlock = function(endChr, restString) {
                var block = '';
                var currChr="";
                while ((currChr != endChr) && (restString.value !== '')) {
                    if (/'|"/.test(currChr)) {
                        block = $.trim(block) + getBlock(currChr, restString);
                    }
                    else if (/\{/.test(currChr)) {
                        block = $.trim(block) + getBlock('}', restString);
                    }
                    else if (/\[/.test(currChr)) {
                        block = $.trim(block) + getBlock(']', restString);
                    }
                    else {
                        block += currChr;
                    }
                    currChr = restString.charAt(0);
                    restString.value = restString.value.slice(1);
                }
                return $.trim(block);
            };

            do {
                var attr = getBlock(',', data);
                attrs.push(attr);
            }
            while (data.value !== '')
                ;
            return attrs;
        }
    });
})(jQuery);

  • Dies funktioniert auch hervorragend mit Zahlen und wir müssen keine separate parseInt-Schleife für sie ausführen, wie in einer anderen Antwort unten erwähnt. Das ist wirklich tiefes Denken. Schätze es sehr und ich denke, die beste Antwort von allen !!

    – Anmol Saraf

    24. Oktober 2012 um 23:47 Uhr


  • Ihr Code ist nützlich, aber Sie haben die Frage nicht beantwortet: “Ist irgendetwas eingebaut, um dies zu tun?” Natürlich können wir wie Sie eine benutzerdefinierte Funktion schreiben oder noch besser eine der vielen vorhandenen Bibliotheken importieren, die bereits geschrieben und gut getestet wurden (z jquery-csv). Aber gibt es etwas eingebaut?

    – Inigo

    23. Februar um 5:02 Uhr


Benutzer-Avatar
Jakkwylde

Die Methode split() wird verwendet, um einen String in ein Array von Teilstrings aufzuteilen, und gibt das neue Array zurück.

var array = string.split(',');

Benutzer-Avatar
Benutzer1386213

Beachten Sie Folgendes:

var a = "";
var x = new Array();
x = a.split(",");
alert(x.length);

wird alarmieren 1

Benutzer-Avatar
Peter Mortensen

Übergeben Sie Ihre durch Kommas getrennte Zeichenfolge an diese Funktion, und sie gibt ein Array zurück, und wenn keine durch Kommas getrennte Zeichenfolge gefunden wird, wird null zurückgegeben.

function splitTheString(CommaSepStr) {
    var ResultArray = null;

    // Check if the string is null or so.
    if (CommaSepStr!= null) {

        var SplitChars=",";

        // Check if the string has comma of not will go to else
        if (CommaSepStr.indexOf(SplitChars) >= 0) {
            ResultArray = CommaSepStr.split(SplitChars);

        }
        else {

            // The string has only one value, and we can also check
            // the length of the string or time and cross-check too.
            ResultArray = [CommaSepStr];
        }
    }
    return ResultArray;
}

Benutzer-Avatar
rad122

Hier ist eine Funktion, die einen String in ein Array umwandelt, auch wenn es nur ein Element in der Liste gibt (kein Trennzeichen):

function listToAray(fullString, separator) {
  var fullArray = [];

  if (fullString !== undefined) {
    if (fullString.indexOf(separator) == -1) {
      fullArray.push(fullString);
    } else {
      fullArray = fullString.split(separator);
    }
  }

  return fullArray;
}

Verwenden Sie es wie folgt:

var myString = 'alpha,bravo,charlie,delta';
var myArray = listToArray(myString, ',');
myArray[2]; // charlie

var yourString = 'echo';
var yourArray = listToArray(yourString, ',');
yourArray[0]; // echo

Ich habe diese Funktion erstellt, weil split gibt einen Fehler aus, wenn der String kein Trennzeichen enthält (nur ein Element).

  • Es wird kein Fehler ausgegeben, wenn das Trennzeichen nicht gefunden wird: 'echo'.split(',') kehrt zurück ['echo']und ''.split(',') kehrt zurück ['']. Du Wille erhalten Sie eine Fehlermeldung, wenn Sie anrufen x.split(',') Wenn x ist keine Zeichenfolge (einschließlich when x ist nicht definiert oder Null), weil es kein … gibt split Funktion für andere Typen verfügbar.

    – Joel Lee

    22. Oktober 2013 um 23:16 Uhr


  • Ah, ich sehe, dass ich tatsächlich versuchte zu benutzen split für ein undefiniertes Objekt, als ich meine listToArray-Funktion schrieb. Danke für den Hinweis…

    – Kabb5

    23. Oktober 2013 um 19:16 Uhr

1015480cookie-checkWie kann ich eine durch Kommas getrennte Zeichenfolge in ein Array konvertieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy