Javascript bir dize çizgi sonra her şeyi alın


150

Bunu yapmanın en temiz yolu ne IE ve firefox'ta işe yarayacaktır.

Dizem şöyle: sometext-20202

Şimdi 'sometext' ve kısa çizgiden sonraki tam sayı farklı uzunluklarda olabilir.

Sadece alt dizeyi ve dizinini kullanmalı mıyım yoksa diğer yollardan mı?

Yanıtlar:


280

Bunu nasıl yaparım:

// function you can use:
function getSecondPart(str) {
    return str.split('-')[1];
}
// use the function:
alert(getSecondPart("sometext-20202"));

62
Dize ise bu işlevin çalışmayacağını belirtmeye değmez sometext-20202-303mi?
Istiaque Ahmed

17
@IstiaqueAhmed, soru özellikle çok spesifik bir formatla ilgili olmasaydı olurdu: "Dizem şöyle görünüyor: sometext-20202"
artlung

7
get everything after the dash in a string in javascriptBu durumda hangisinin başarısız olacağı sorusu vardı .
Artem Kalinchuk

108

Tercih ettiğim bir çözüm:

const str = 'sometext-20202';
const slug = str.split('-').pop();

slugSonucun nerede olurdu


1
Birden çok sınırlayıcı ile çalışıyorsanız bu çözümler en iyisidir.
Ethan Keiley

26
var the_string = "sometext-20202";
var parts = the_string.split('-', 2);

// After calling split(), 'parts' is an array with two elements:
// parts[0] is 'sometext'
// parts[1] is '20202'

var the_text = parts[0];
var the_num  = parts[1];

24
var testStr = "sometext-20202"
var splitStr = testStr.substring(testStr.indexOf('-') + 1);

6

AFAIK, hem substring()ve indexOf()Mozilla ve IE her ikisi tarafından desteklenmektedir. Ancak, substr () işlevinin bazı tarayıcıların önceki sürümlerinde (özellikle Netscape / Opera) desteklenmeyebileceğini unutmayın.

Mesajınız zaten kullanarak nasıl yapacağınızı bildiğinizi gösterir substring()ve indexOf()bu nedenle bir kod örneği göndermiyorum.


Bu aslında uygulamanıza bağlı olarak bölünmekten daha iyi bir çözümdür, çünkü birden fazla varsa - istenmeyen sonuçlar elde edebilirsiniz.
trevorgrayson

20
string.substring (string.indexOf ('-') + 1)
trevorgrayson

çoklu dolgular mevcut olmasına rağmen indexOf IE8 ve altında mevcut değildir.
Erik Honn

3

Bunu js'de yerleşik RegExp (pattern [, flags]) Factory Notation ile yapabilirsiniz:

RegExp(/-(.*)/).exec("sometext-20202")[1]

yukarıdaki kod exec işlevinde, biri tire (-20202) diğeri tire (20202) olmayan iki elemanlı (["-20202", "20202"]) bir dizi döndürülür, ikinci elemanı (dizin 1) seçmelisiniz



0

Formun normal ifadesini kullanın: \ w- \ d + burada bir \ w bir sözcüğü ve \ d bir rakamı temsil eder. Kutunun dışında çalışmayacaklar, o yüzden oyna. Deneyin bu .

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.