Entfernen Sie das führende Komma aus einer Zeichenfolge

187

Ich habe die folgende Zeichenfolge:

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

Ich möchte dies in ein Array umwandeln, aber dies ist offensichtlich aufgrund des ersten Kommas nicht gültig. Wie kann ich das erste Komma aus meiner Zeichenfolge entfernen und daraus ein gültiges Array machen?

Am Ende möchte ich so etwas haben:

myArray  = ['first string','more','even more']
Mircea
quelle
43
Verwenden Sie einfachmyString.slice(1);
NBK
2
@NikhilBenKuruvilla Dies entfernt alle Zeichen, auch wenn es kein Komma ist. Hier ist das erste Zeichen nur durch Komma entfernen stackoverflow.com/a/39047793/696535
Pawel
Mögliches Duplikat von Erstes Zeichen einer Zeichenfolge in Javascript
löschen
Pawel, was wäre der Ausdruck, um das erste Semikolon zu entfernen, egal wo es sich am Anfang der Zeichenfolge befindet? Ich muss dies verwenden: Funktion removeFirstSemicolon (str) {str = str.trim (); str = str.replace (/ ^; /, ''); return str; } Das könnte hilfreicher sein - es gibt oft Leerzeichen vor und nach dem Charakter, also muss ich Trim wirklich zweimal verwenden.
user1585204

Antworten:

312

Um das erste Zeichen zu entfernen, würden Sie verwenden:

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

Ich bin mir nicht sicher, ob dies das Ergebnis ist, nach dem Sie suchen, da Sie es immer noch teilen müssen, um ein Array damit zu erstellen. Vielleicht so etwas wie:

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

Denken Sie daran, dass das Zeichen 'ein Teil jeder Zeichenfolge in der Teilung hier ist.

Joel Etherton
quelle
94

In diesem speziellen Fall (es gibt immer ein einzelnes Zeichen am Anfang, das Sie entfernen möchten) möchten Sie:

str.substring(1)

Wenn Sie jedoch erkennen möchten, ob das Komma vorhanden ist, und es entfernen möchten, wenn dies der Fall ist, können Sie Folgendes tun:

if (str[0] == ',') { 
  str = str.substring(1);
}
thomasrutter
quelle
3
+1 auch für die Bedingung. Es ist immer besser anzunehmen, dass ein Komma möglicherweise nicht vorhanden ist.
JoeMoe1984
1
Dies ist eine bessere Antwort und sollte die akzeptierte Antwort sein.
Christopher Smit
Es ist nicht erforderlich, den Teilstring zweimal auszuführen, um das erste Zeichen zu überprüfen: if (str[0] === ',')nur um ihn etwas leistungsfähiger zu machen.
Croot
11

Einzeiler

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

Ich werde zurück sein.

Pawel
quelle
9
var s = ",'first string','more','even more'";

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

Dies setzt voraus, dass die Zeichenfolge, mit der Sie beginnen, tatsächlich eine Zeichenfolge ist, wie Sie sagten, und kein Array von Zeichenfolgen.

EMMERICH
quelle
4

Angenommen, die Zeichenfolge heißt myStr:

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

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

Beachten Sie, dass Sie die Aufteilung manuell schreiben müssen, wenn eine Zeichenfolge in der Liste fehlen kann, ohne dass Anführungszeichen vorhanden sind, und Sie eine leere Stelle an der entsprechenden Stelle im Array wünschen.

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

Ergebnisse in:

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

Zuerst mit Kommas teilen, die möglicherweise in einfache Anführungszeichen gesetzt sind,
dann die nicht wahrheitsgemäßen (leeren) Teile herausfiltern.

Peterhil
quelle
3

Um einen String in ein Array zu verwandeln, verwende ich normalerweise split()

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

Das ist fast was du willst. Jetzt müssen Sie nur noch die ersten beiden und das letzte Zeichen entfernen:

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

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

Um einen Teilstring aus einem String zu extrahieren, benutze ich normalerweise slice()aber substr()und substring()mache auch den Job.

Fabian Jakobs
quelle
1

Sie können die Funktion "Javascript direkt ersetzen" durch Regex verwenden oder eine Hilfefunktion wie in PHP LTRIM (links) und RTRIM (rechts) definieren:

1) Mit ersetzen:

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

2) Hilfefunktionen:

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});;

Sie können und andere Dinge tun, um der Hilfefunktion Parameter hinzuzufügen, mit denen Sie das Zeichen usw. ersetzen möchten.

onalbi
quelle
1
s=s.substring(1);

Ich mag es, Dinge einfach zu halten.

Krise
quelle
0

Dadurch werden die nachfolgenden Kommas und Leerzeichen entfernt

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