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

187

J'ai la chaîne suivante:

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

Je veux transformer cela 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?

J'aimerais finir avec quelque chose comme ça:

myArray  = ['first string','more','even more']
Mircea
la source
43
Utilisez simplementmyString.slice(1);
NBK
2
@NikhilBenKuruvilla cela supprimera n'importe quel caractère même s'il ne s'agit pas d'une virgule. Voici la suppression du premier caractère par virgule uniquement stackoverflow.com/a/39047793/696535
Pawel
Double
Pawel, quelle serait l'expression pour supprimer le premier point-virgule, peu importe où il se trouve depuis le début de la chaîne? Je dois utiliser ceci: function removeFirstSemicolon (str) {str = str.trim (); str = str.replace (/ ^; /, ''); return str; } Cela pourrait être plus utile - il y a souvent des espaces blancs avant et après le caractère, donc je dois vraiment utiliser trim deux fois.
user1585204

Réponses:

312

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 que vous recherchez, car vous devrez toujours le diviser pour créer un tableau avec. 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.

Joël Etherton
la source
94

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

str.substring(1)

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

if (str[0] == ',') { 
  str = str.substring(1);
}
thomasrutter
la source
3
+1 pour le conditionnel également. Il est toujours préférable de supposer qu'une virgule peut ne pas être là.
JoeMoe1984
1
C'est une meilleure réponse et devrait être la réponse acceptée.
Christopher Smit
Il n'est pas nécessaire d'exécuter la sous-chaîne deux fois pour vérifier le premier caractère: if (str[0] === ',')juste pour le rendre légèrement plus performant.
Croot
11

Bon mot

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

Je reviendrai.

Pawel
la source
9
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.

EMMERICH
la source
4

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 avoir ses guillemets présents et que vous voulez un emplacement vide à l'emplacement correspondant dans le tableau, vous devrez écrire le fractionnement manuellement pour une solution robuste.

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

Résulte en:

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

Commencez par séparer par des virgules éventuellement entourées de guillemets simples,
puis filtrez les parties non véridiques (vides).

Peterhil
la source
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. Il ne vous reste plus qu'à supprimer 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.

Fabian Jakobs
la source
1

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 le caractère, etc.

onalbi
la source
1
s=s.substring(1);

J'aime garder les choses simples.

Cris
la source
0

cela supprimera les virgules et les espaces de fin

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