J'ai le code C # suivant que j'ai besoin de convertir en JavaScript: 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? P> P>
6 Réponses :
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 != ""; });
Version plus courte: "chien; in; bin ;; cates" .split (";"). Filtre (booléen) code> :)
Split nécessite également de manipuler les résultats vides. Cependant, où est une autre façon
http://jsfiddle.net/9mhug/1/ p> Cela vous donnera un tableau propre de Seulement les mots.
\ w code> est une recherche de regex qui trouvera toutes les lettres de certains types [a-za-z0-9 _] code> p> p>
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" ]
"; foo ;;; bar ;;;;;;;;; baz;" -> [";", "foo", "bar", "baz", ";"], d'une manière ou d'une autre nécessité d'être coupée
Essayez ceci ou p> résulte p> et Pour le reconvertir en chaîne, utilisez cette P> "hello;aamir;;afridi".split(';').filter(Boolean).join(';')
Malheureusement, JavaScript Split () ne vérifie pas les DoubleSpaces, etc., vous auriez besoin de nettoyer votre tableau plus tard 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);
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;
}
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