Usuń wiodący przecinek z ciągu


187

Mam następujący ciąg:

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

Chcę przekształcić to w tablicę, ale oczywiście nie jest to ważne z powodu pierwszego przecinka. Jak mogę usunąć pierwszy przecinek z mojego ciągu i ustawić go jako prawidłową tablicę?

Chciałbym skończyć z czymś takim:

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

43
Po prostu użyjmyString.slice(1);
NBK

2
@NikhilBenKuruvilla spowoduje to usunięcie każdej postaci, nawet jeśli nie jest to przecinek. Oto pierwszy znak usuwania tylko przecinków stackoverflow.com/a/39047793/696535
Pawel


Paweł, jakie byłoby wyrażenie, aby usunąć pierwszy średnik bez względu na to, gdzie się on znajduje od początku ciągu? Muszę użyć tego: function removeFirstSemicolon (str) {str = str.trim (); str = str .replace (/ ^; /, ''); return str; } To może być bardziej pomocne - często przed i po postaci występuje biała spacja, więc naprawdę muszę użyć przycinania dwa razy.
user1585204

Odpowiedzi:


312

Aby usunąć pierwszy znak, którego chcesz użyć:

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

Nie jestem pewien, czy to będzie wynik, którego szukasz, ponieważ nadal będziesz musiał go podzielić, aby utworzyć z nim tablicę. Może coś takiego:

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

Pamiętaj, że znak „będzie częścią każdego ciągu w tym miejscu podziału.


94

W tym konkretnym przypadku (zawsze na początku jest jeden znak, który chcesz usunąć), będziesz chciał:

str.substring(1)

Jeśli jednak chcesz mieć możliwość wykrycia przecinka i usunięcia go, jeśli tak, to:

if (str[0] == ',') { 
  str = str.substring(1);
}

3
+1 również dla warunkowej. Zawsze lepiej jest założyć, że przecinek może nie być dostępny.
JoeMoe1984

1
To jest lepsza odpowiedź i powinna być odpowiedzią zaakceptowaną.
Christopher Smit

Nie jest konieczne dwukrotne uruchomienie podłańcucha, aby sprawdzić pierwszy znak: if (str[0] === ',')po prostu, aby był nieco bardziej wydajny.
Croot 27.07.18


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

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

Zakładając, że ciąg, od którego zaczynasz, w rzeczywistości jest ciągiem, jak powiedziałeś, a nie tablicą ciągów.


4

Zakładając, że ciąg nazywa się myStr:

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

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

Zauważ, że jeśli na liście może brakować ciągu, nawet bez znaków cudzysłowu, a chcesz mieć puste miejsce w odpowiedniej lokalizacji w tablicy, musisz ręcznie napisać podział, aby uzyskać solidne rozwiązanie.


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

Prowadzi do:

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

Najpierw podziel się przecinkami, być może otoczonymi pojedynczymi cudzysłowami,
a następnie odfiltruj nieprawdziwe (puste) części.


3

Aby zamienić ciąg znaków w tablicę, której zwykle używam split()

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

To jest prawie to, czego chcesz. Teraz musisz tylko rozebrać dwie pierwsze i ostatnią postać:

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

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

Aby wyodrębnić podciąg z ciągu Zwykle wykorzystać slice(), ale substr()i substring()również wykonać zadanie.


1

Możesz użyć funkcji bezpośredniego zastąpienia w javascript regex lub zdefiniować funkcję pomocy jak w php ltrim (po lewej) i rtrim (po prawej):

1) Z zastąpieniem:

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

2) Funkcje pomocy:

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

Możesz zrobić i inne rzeczy, aby dodać parametr do funkcji pomocy z tym, co chcesz zastąpić znak itp.



0

usunie to końcowe przecinki i spacje

var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.