8
votes

Quelle est la meilleure façon de faire Split () en JavaScript et d'ignorer les entrées vierges?

J'ai le code C # suivant que j'ai besoin de convertir en JavaScript: xxx

Je vois que JavaScript a une fonction Split () aussi, mais je voulais voir s'il y a construit Prise en charge des autres chèques ou je dois effectuer une boucle supplémentaire autour de la matrice ensuite pour "nettoyer" les données?


3 commentaires

Peut-être que vous pouvez remplacer ";;" avec ";" dans la corde à l'avance?


@Wilmer Qu'en est-il de ;;; ou ;;;; etc


devrait être dans une boucle


6 Réponses :


9
votes

Vous pouvez utiliser filtre , mais cette fonction est implémentée uniquement dans des navigateurs plus récents.

"dog;in;bin;;cats".split(";").filter(function (x) { return x != ""; });


1 commentaires

Version plus courte: "chien; in; bin ;; cates" .split (";"). Filtre (booléen) :)



1
votes

Split nécessite également de manipuler les résultats vides. Cependant, où est une autre façon

http://jsfiddle.net/9mhug/1/ xxx

Cela vous donnera un tableau propre de Seulement les mots. \ w est une recherche de regex qui trouvera toutes les lettres de certains types [a-za-z0-9 _]


0 commentaires

7
votes

Vous pouvez utiliser un Regexp avec un Quantifier à scinder sur tout compte consécutif du délimiteur:

var input = "foo;;;bar;;;;;;;;;baz";
var parts = input.split(/;+/);

console.log(parts);
// [ "foo", "bar", "baz" ]


1 commentaires

"; foo ;;; bar ;;;;;;;;; baz;" -> [";", "foo", "bar", "baz", ";"], d'une manière ou d'une autre nécessité d'être coupée



4
votes

Essayez ceci xxx pré>

ou p> xxx pré>

résulte p> xxx pré>

et Pour le reconvertir en chaîne, utilisez cette P>

"hello;aamir;;afridi".split(';').filter(Boolean).join(';')


0 commentaires

1
votes

Malheureusement, JavaScript Split () ne vérifie pas les DoubleSpaces, etc., vous auriez besoin de nettoyer votre tableau plus tard xxx pré>

http://jsfiddle.net/p58qm/2/ p>

Vous pouvez ensuite mettre à jour la matrice avec cette boucle P>

len = arr.length, i;

for(i = 0; i < len; i++ )
arr[i] && arr.push(arr[i]);  // copy non-empty values to the end of the array

arr.splice(0 , len);

alert(arr);


0 commentaires

1
votes

Essayez ceci:

function parseSemicolon(fullString) {
    var result = new Array();
    if (!!fullString && fullString.length > 0) {
        fullString = fullString.trim();
        if (fullString.indexOf(';') > -1) {
            result = fullString.split(';');
            for (var i = 0; i < result.length; i++) {
                result[i] = result[i].trim();
            }
        } else {
            result = new Array(fullString);
        }
    }
    return result;
}


0 commentaires