web-dev-qa-db-fra.com

Supprimer la virgule de début d'une chaîne

J'ai la chaîne suivante:

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

Je veux transformer ceci en un tableau mais évidemment 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 ça:

myArray  = ['first string','more','even more']
180
Mircea

Pour supprimer le premier caractère que vous utiliseriez:

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

Je ne suis pas sûr que ce soit le résultat recherché, car vous devrez tout de même le scinder pour créer un tableau. Peut-être quelque chose comme:

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

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

305
Joel Etherton

Dans ce cas spécifique (il y a toujours un seul caractère au début que vous souhaitez supprimer), vous souhaiterez:

str.substring(1)

Cependant, si vous voulez être en mesure de détecter si la virgule est présente et de la supprimer si c'est le cas, procédez comme suit:

if (str[0] == ',') { 
  str = str.substring(1);
}
89
thomasrutter
var s = ",'first string','more','even more'";

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

Cela suppose que la chaîne par laquelle vous commencez est en fait une chaîne, comme vous l'avez dit, et non un tableau de chaînes.

8
EMMERICH

Bon mot 

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

Je reviendrai.

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

Résulte en: 

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

Première scission avec des virgules éventuellement entourées de guillemets simples,
puis filtre les parties non véridiques (vides).

4
peterhil

En supposant que la chaîne s'appelle 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 manquante dans la liste sans même que ses guillemets soient présents et que vous souhaitez un emplacement vide à l'emplacement correspondant dans le tableau, vous devez écrire la division manuellement pour obtenir une solution robuste.

3
jjrv

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

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

C'est presque ce que tu veux. Il ne vous reste plus qu'à déshabiller 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 sous-chaîne d'une chaîne, j'utilise habituellement slice() mais substr() et substring() fait également le travail.

3
Fabian Jakobs

Vous pouvez utiliser directement la fonction de remplacement sur javascript avec regex ou définir une fonction d'aide comme dans 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 pour ajouter un paramètre à la fonction d’aide avec ce que vous voulez remplacer, etc. 

1
onalbi
s=s.substring(1);

J'aime garder les choses simples.

1
Cris

Ceci supprimera les virgules et les espaces finaux

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