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']
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.
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);
}
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.
Bon mot
str = str.replace(/^,/, '');
Je reviendrai.
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).
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.
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.
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.
s=s.substring(1);
J'aime garder les choses simples.
Ceci supprimera les virgules et les espaces finaux
var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');