Bir dizenin bir kısmı nasıl kaldırılır?


Yanıtlar:


147

Bunu yapmanın en sevdiğim yolu "bölmek ve fırlatmak":

var str = "test_23";
alert(str.split("_").pop());
// -> 23

var str2 = "adifferenttest_153";
alert(str2.split("_").pop());
// -> 153

split () , belirtilen bir ayırıcı dizeyi kullanarak bir dizeyi bir dizi diziye böler.
pop () , dizideki son öğeyi kaldırır ve o öğeyi döndürür.


25
İçimdeki C programcısı, bu basit bölme / açma işleminde yaratılan ve yok edilen nesnelerin sayısını korkutuyor :) Muhtemelen: bir dizi, 2 dizi, başka bir dizi, başka bir dizi.
Gui13

11
@xgbi: evet, JavaScript ve C geliştiricilerinin oldukça farklı felsefeleri var ;-)
Andy E

3
Eğer cevap kullanılma olasılığını ekleyebilirsiniz alert(str.split("_")[1]);beri .split, iki elemanlı bir dizi oluşturur [0]önce varlık "_"ve [1]sonrasında. Aslında aradığım şey buydu ama cevabınız oraya ulaşmama yardımcı oldu ^^
Fernando Silva

1
@FernandoSilva O zaman, eğer iki "_" veya daha fazla olsaydı, 3 öğe dizisi elde ederiz ve üçüncüyü de kullanabilir / silebilirdik, değil mi? BTW, +1. Tam olarak aradığım şey.
Işık Sabrix

@TheLightSabrix çalıştığına bir bakın, metinle açıklamaya çalışmaktan çok daha kolay. jsbin.com/keleguzacu/edit?js,console
Fernando Silva

42

Dizenizin her zaman şununla başladığını varsayarsak 'test_':

var str = 'test_23';
alert(str.substring('test_'.length));

5
ya testle başlamazsa?
NullVoxPopuli

Değiştir'i kullanın, ancak birden çok olay varsa bu işe yaramaz. str.replace ("test_", ""); "test_" nin tüm oluşumlarının kaldırıldığı yeni bir dize döndürecektir, bu nedenle yalnızca bir oluşum garanti edilirse, o zaman iyi olmalıdır. Bununla birlikte, birden çok varsa, str = str.substring (0, str.indexOf ("test_)" + str.substring (str.indexOf ("test_") + 5, str.length) kullanırım; Bunu biliyorum eski bir gönderi, ancak karşısına çıkan biri en az bir kişiye yardım edebilir.
George Xavier

23

Dizenin bir kısmını kaldırmak istiyorsanız

let str = "test_23";
str.replace("test_", "");
// 23

Dizenin bir kısmını değiştirmek istiyorsanız

let str = "test_23";
str.replace("test_", "student-");
// student-23


9
string = "test_1234";
alert(string.substring(string.indexOf('_')+1));

Dizede alt çizgi yoksa bile çalışır. Http://jsbin.com/ adresinde deneyin


4
Bunun daha az yükü var, ancak Andy E'nin cevabından daha fazla kod var. İkisi de işe yarıyor ama ben bu yöntemi tercih ediyorum.
palswim

0
string = "removeTHISplease";
result = string.replace('THIS','');

Bence değiştir aynı şeyi kendi işlevi gibi yapıyor. Benim için bu çalışıyor.


Yalnızca kod yanıtları, nasıl ve neden çalıştıklarına dair bazı açıklamalar eklenerek neredeyse her zaman iyileştirilebilir. Biçimlendirme önemlidir.
Jason Aller

En azından üstte bulunanlardan farklı olarak değiştirmeyi de kullanıyor.

0

"www."Bir href'den kaldırmak istedim , bu yüzden şunu yaptım:

const str = "https://www.example.com/path";

str.split("www.").join("");

// https://example.com/path
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.