Dizeden önde gelen virgül kaldırma


187

Aşağıdaki dize var:

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

Bunu bir Diziye dönüştürmek istiyorum ama açıkçası bu ilk virgül nedeniyle geçerli değil. İlk virgülleri dizemden nasıl kaldırabilir ve geçerli bir Dizi yapabilirim?

Böyle bir şeyle sonuçlanmak istiyorum:

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

43
Basitçe kullanınmyString.slice(1);
NBK

2
@NikhilBenKuruvilla, virgül olmasa bile herhangi bir karakteri kaldıracaktır. İşte ilk karakter yalnızca virgül kaldırma stackoverflow.com/a/39047793/696535
Pawel


Pawel, dizenin başından itibaren nerede olursa olsun ilk noktalı virgülün kaldırılması için ne ifade olurdu? Bunu kullanmak zorunda: function removeFirstSemicolon (str) {str = str.trim (); str = str.replace (/ ^; /, ''); dönüş str; } Bu daha yararlı olabilir - genellikle karakterden önce ve sonra beyaz boşluk var, bu yüzden gerçekten iki kez trim kullanmak zorundayım.
user1585204

Yanıtlar:


312

Kullanacağınız ilk karakteri kaldırmak için:

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

Bunun için aradığınız sonuç olacağından emin değilim, çünkü yine de onunla bir dizi oluşturmak için bölmeniz gerekecek. Belki şöyle bir şey:

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

Unutmayın, 'karakteri buradaki bölümdeki her dizenin bir parçası olacaktır.


94

Bu özel durumda (kaldırmak istediğiniz başlangıçta her zaman tek bir karakter vardır):

str.substring(1)

Ancak, virgülün orada olup olmadığını tespit etmek ve varsa kaldırmak istiyorsanız, o zaman şöyle bir şey:

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

3
Koşullu için de +1. Bir virgülün orada olmayabileceğini varsaymak her zaman daha iyidir.
JoeMoe1984

1
Bu daha iyi bir cevaptır ve kabul edilen cevap olmalıdır.
Christopher Smit

İlk karakteri kontrol etmek için alt dizeyi iki kez çalıştırmak gerekli değildir: if (str[0] === ',')sadece biraz daha performans göstermek için.
Croot

11

Tek astar

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

Geri döneceğim.


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

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

Bu, başladığınız dizenin aslında sizin söylediğiniz gibi bir Dizgi olduğunu varsayarak, bir dizi Dizisi değil.


4

Dizenin myStr olarak adlandırıldığı varsayılarak:

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

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

Bir dize, tırnak işaretleri olmadan bile listede eksikse ve dizideki karşılık gelen konumda boş bir nokta istiyorsanız, sağlam bir çözüm için bölmeyi el ile yazmanız gerektiğini unutmayın.


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

Sonuçlar:

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

İlk önce virgülle tek tırnak işareti içine alınmış şekilde bölün,
sonra gerçek olmayan (boş) kısımları filtreleyin.


3

Bir dizeyi genellikle kullandığım bir diziye dönüştürmek için split()

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

Neredeyse istediğiniz budur. Şimdi sadece ilk ikisini ve son karakteri soymanız gerekiyor:

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

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

Genellikle kullandığınız bir dize bir alt dizeyi çıkarmak için slice()değil substr()ve substring()aynı zamanda iş yapmak.


1

Javascript üzerindeki işlevi regex ile doğrudan değiştirebilir veya php ltrim (solda) ve rtrim'de (sağda) olduğu gibi bir yardım işlevi tanımlayabilirsiniz:

1) değiştirin:

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

2) Yardım fonksiyonları:

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

Yardım işlevine karakteri değiştirmek istediğiniz şeyle parametre eklemek için başka şeyler yapabilirsiniz.


1
s=s.substring(1);

İşleri basit tutmayı seviyorum.


0

bu, virgül ve boşlukları kaldıracaktır

var str = ",'first string','more','even more'";
var trim = str.replace(/(^\s*,)|(,\s*$)/g, '');
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.