2010-10-13 4 views
156

J'ai la chaîne suivante:Supprimer principale d'une chaîne par des virgules

",'first string','more','even more'" 

Je veux le transformer en un tableau, mais de toute évidence ce n'est pas valide en raison de la première virgule. Comment puis-je supprimer la première virgule de ma chaîne et en faire un tableau valide?

Je voudrais finir avec quelque chose comme ceci:

myArray = ['first string','more','even more'] 
+39

utiliser simplement 'myString.slice (1);' –

+0

@NikhilBenKuruvilla cela supprimera tout caractère même si ce n'est pas une virgule. Voici la première suppression de virgules de caractère http://stackoverflow.com/a/39047793/696535 – Pawel

+0

Possible dupliquer de [Supprimer le premier caractère d'une chaîne en Javascript] (https://stackoverflow.com/questions/4564414/delete-first -character-of-a-string-in-javascript) –

Répondre

272

Pour enlever le premier caractère que vous utilisez:

myOriginalString = ",'first string','more','even more'"; 
myString = myOriginalString.substring(1); 

Je ne suis pas sûr que ce sera le résultat que vous Vous recherchez cependant parce que vous devrez toujours le diviser pour créer un tableau avec lui. Peut-être quelque chose comme:

myString = myOriginalString.substring(1); 
myArray = myString.split(','); 

Gardez à l'esprit, le caractère 'fera partie de chaque chaîne dans la division ici.

7
var s = ",'first string','more','even more'"; 

var array = s.split(',').slice(1); 

C'est en supposant la chaîne que vous commencez avec est en fait une chaîne, comme vous avez dit, et non un tableau de chaînes.

83

Dans ce cas précis (il y a toujours un caractère unique au début que vous voulez supprimer) vous voulez:

str.substring(1) 

Cependant, si vous voulez être en mesure de détecter si la virgule est là et l'enlever si elle est, alors quelque chose comme:

if (str.substring(0, 1) == ',') { 
    str = str.substring(1); 
} 
+8

+1 pour le conditionnel –

+1

+1 pour le conditionnel ainsi. Il est toujours préférable de supposer une virgule peut ne pas être là. – JoeMoe1984

+0

Ceci est une meilleure réponse et devrait être la réponse acceptée. –

3

Pour transformer une chaîne en un tableau que j'utilise habituellement split()

> var s = ",'first string','more','even more'" 
> s.split("','") 
[",'first string", "more", "even more'"] 

C'est presque ce que vous voulez. Maintenant, il vous suffit de dépouiller les deux premiers et le dernier caractère:

> s.slice(2, s.length-1) 
"first string','more','even more" 

> s.slice(2, s.length-2).split("','"); 
["first string", "more", "even more"] 

Pour extraire une chaîne d'une chaîne que j'utilise habituellement slice() mais substr() et substring() aussi faire le travail.

2

En supposant que la chaîne est appelée myStr:

// Strip start and end quotation mark and possible initial comma 
myStr=myStr.replace(/^,?'/,'').replace(/'$/,''); 

// Split stripping quotations 
myArray=myStr.split("','"); 

Notez que si une chaîne peut être manquant dans la liste sans même avoir ses guillemets présents et que vous voulez un endroit vide dans l'emplacement correspondant dans le tableau, vous aurez besoin d'écrire le fractionnement manuellement pour une solution robuste.

4
var s = ",'first string','more','even more'"; 
s.split(/'?,'?/).filter(function(v) { return v; }); 

résultats dans:

["first string", "more", "even more'"] 

fendu d'abord par des virgules, éventuellement entourés par des guillemets simples,
puis filtrer les parties non truthy (vide) out.

1

Vous pouvez utiliser directement remplacer la fonction javascript avec regex ou définir une fonction d'aide comme en php ltrim (à gauche) et rtrim (à droite):

1) Avec remplacer:

var myArray = ",'first string','more','even more'".replace(/^\s+/, '').split(/'?,?'/); 

2) fonctions d'aide:

if (!String.prototype.ltrim) String.prototype.ltrim = function() { 
    return this.replace(/^\s+/, ''); 
}; 
if (!String.prototype.rtrim) String.prototype.rtrim = function() { 
    return this.replace(/\s+$/, ''); 
}; 
var myArray = ",'first string','more','even more'".ltrim().split(/'?,?'/).filter(function(el) {return el.length != 0});; 

vous pouvez faire et d'autres choses à ajouter le paramètre à la fonction d'aide avec ce que vous voulez remplacer le char, etc.

4

One-liner

str = str.replace(/^,/, ''); 

Je serai de retour.

0
s=s.substring(1); 

J'aime garder les choses simples.

0

cela supprimera les virgules et les espaces de fin

var str = ",'first string','more','even more'"; 
var trim = str.replace(/(^\s*,)|(,\s*$)/g, ''); 
Questions connexes