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.