Отримайте все після тире в рядку в JavaScript


150

Який був би найчистіший спосіб зробити це, який би працював як в IE, так і в firefox.

Моя рядок виглядає приблизно так: sometext-20202

Тепер 'sometext' і ціле число після тире може бути різної довжини.

Чи варто просто використовувати підрядку та індекс або це інші способи?

Відповіді:


280

Як я це зробив:

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

62
Чи не варто згадувати, що ця функція не буде працювати, якщо рядок є sometext-20202-303?
Істіаке Ахмед

17
@IstiaqueAhmed було б, якби питання стосувалося не дуже конкретного формату: "Моя рядок виглядає так: sometext-20202"
artlung

7
Питання було, get everything after the dash in a string in javascriptщо в цьому випадку не вдасться.
Артем Калинчук

108

Я вважаю за краще рішення:

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

Де slugбув би ваш результат


1
Це рішення найкраще, якщо ви працюєте з кількома роздільниками.
Етан Кілі

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];


6

AFAIK, як substring()і indexOf()підтримуються як Mozilla і IE. Однак зауважте, що substr () може не підтримуватися в попередніх версіях деяких браузерів (наприклад, Netscape / Opera).

Ваше повідомлення вказує на те, що ви вже знаєте, як це зробити за допомогою, substring()і indexOf()тому я не розміщую зразок коду.


Це насправді краще рішення, ніж розділення, залежно від вашої заявки, адже якщо у вас їх більше - ви можете отримати небажані наслідки.
trevorgrayson

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

indexOf не існує в IE8 і нижче, хоча поліфіли існують.
Ерік Гонн

3

Ви можете зробити це за допомогою вбудованого RegExp (візерунок [, прапори]) Заводські позначення у js, як це:

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

у наведеному вище коді exec функція поверне масив із двома елементами (["-20202", "20202"]), один із дефісом (-20202) та другим без дефісу (20202), слід вибрати другий елемент (індекс 1)



0

Використовуйте регулярний вираз форми: \ w- \ d + де a \ w являє собою слово, а \ d являє собою цифру. Вони не вийдуть з коробки, тому пограйте. Спробуйте це .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.