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']

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


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.


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

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.


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.


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.


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.


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.


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.


1
s=s.substring(1);

Ich mag es, Dinge einfach zu halten.


0

Dadurch werden die nachfolgenden Kommas und Leerzeichen entfernt

var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.