2010-10-13 9 views
156

Mam następujący ciąg:usuwania początku przecinek z ciągiem

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

Chcę, aby przekształcić to do tablicy, ale oczywiście nie jest to ważne ze względu na pierwszym przecinkiem. Jak mogę usunąć pierwszy przecinek z mojego ciągu znaków i uczynić go prawidłową tablicą?

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

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

prostu użyć 'myString.slice (1);' –

+0

@NikhilBenKuruvilla będzie usunąć dowolny znak, nawet jeśli nie jest to przecinek. Oto pierwszy znak, który usuwa tylko przecinkę http://stackoverflow.com/a/39047793/696535 – Pawel

+0

Możliwy duplikat [Usuń pierwszy znak ciągu w JavaScript] (https://stackoverflow.com/questions/4564414/delete-first -charakter-of-a-string-in-javascript) –

Odpowiedz

272

aby usunąć pierwszy znak użyłbyś:

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

nie jestem pewien, że to będzie wynik ty ale szukasz, ponieważ nadal będziesz musiał podzielić go, aby utworzyć z nim tablicę. Może coś takiego:

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

Należy pamiętać, że "znak będzie częścią każdego ciągu w tym miejscu.

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

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

Zakładamy, że ciąg, od którego zaczynasz, jest tak naprawdę ciągiem, jak powiedziałeś, a nie tablicą strun.

83

W tym konkretnym przypadku (zawsze istnieje pojedynczy znak na początku chcesz usunąć) będziemy chcieli:

str.substring(1) 

Jednakże, jeśli chcesz być w stanie wykryć, czy przecinek jest tam i usunąć go, jeśli tak jest, to coś takiego:

if (str.substring(0, 1) == ',') { 
    str = str.substring(1); 
} 
+8

+1 dla warunkowego –

+1

+1 także warunkowego. Zawsze lepiej jest założyć, że nie może tam być przecinka. – JoeMoe1984

+0

To jest lepsza odpowiedź i powinna być zaakceptowaną odpowiedzią. –

3

Aby włączyć ciąg do tablicy zwykle używam split()

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

To jest prawie to, co chcesz. Teraz po prostu trzeba rozebrać dwa pierwsze i ostatni znak:

> 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 używam slice() ale substr() i substring() również wykonać zadanie.

2

Zakładając ciąg nazywa 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 ciąg może być brakuje na liście, nawet bez konieczności jej cudzysłów obecny i chcesz puste miejsce w odpowiednim miejscu w tablicy, musisz ręcznie podzielić podział na solidne rozwiązanie.

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

Wyniki w:

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

Pierwszy split z przecinkami ewentualnie otoczone apostrofami,
następnie filtrować niepodlegania truthy (pusty) częœci.

1

można użyć bezpośrednio zastąpić funkcję javascript z regex lub zdefiniować funkcję pomocy jak w LTRIM php (z lewej) i RTRIM (prawy):

1) przy wymienić:

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

2) funkcje Pomoc:

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żna robić i inne rzeczy, aby dodać parametr do funkcji pomocy, co chcesz, aby zastąpić char itp

4

One-liner

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

Wrócę.

0
s=s.substring(1); 

Lubię zachować rzeczy proste.

0

to usunie przecinki i spacje trailing

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