รับทุกอย่างหลังจากที่ขีดเป็นสตริงใน javascript


150

อะไรจะเป็นวิธีที่สะอาดที่สุดในการทำสิ่งนี้ซึ่งจะใช้ได้ทั้งใน IE และ Firefox

สตริงของฉันมีลักษณะดังนี้: someext-20202

ตอนนี้ 'someext' และจำนวนเต็มหลังจากเส้นประอาจมีความยาวต่างกัน

ฉันควรใช้สตริงย่อยและดัชนีของหรือเป็นวิธีอื่นหรือไม่

คำตอบ:


280

ฉันจะทำสิ่งนี้อย่างไร:

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

62
มันไม่คุ้มค่าที่จะกล่าวถึงว่าฟังก์ชั่นนี้จะไม่ทำงานถ้าเป็นสายsometext-20202-303?
Istiaque Ahmed

17
@IstiaqueAhmed ถ้าเป็นคำถามที่ไม่เฉพาะเจาะจงเกี่ยวกับรูปแบบที่เฉพาะเจาะจงมาก: "สตริงของฉันมีลักษณะเช่นนี้: someext-20202"
artlung

7
คำถามที่มีget everything after the dash in a string in javascriptในกรณีนี้จะล้มเหลว
Artem Kalinchuk

108

ทางออกที่ฉันต้องการคือ:

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

slugผลลัพธ์ของคุณจะอยู่ที่ไหน


1
วิธีแก้ปัญหานี้ดีที่สุดถ้าคุณทำงานกับตัวคั่นหลายตัว
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];


6

AFAIK ทั้งสองsubstring()และindexOf()รองรับทั้ง Mozilla และ IE อย่างไรก็ตามโปรดทราบว่า substr () อาจไม่รองรับเบราว์เซอร์บางรุ่นก่อนหน้านี้ (โดยเฉพาะ Netscape / Opera)

โพสต์ของคุณบ่งบอกว่าคุณรู้อยู่แล้วว่าวิธีการทำมันใช้substring()และindexOf()ดังนั้นฉันไม่ได้โพสต์ตัวอย่างรหัส


นี่เป็นทางออกที่ดีกว่าการแยกทั้งนี้ขึ้นอยู่กับแอปพลิเคชันของคุณเพราะถ้าคุณมีมากกว่าหนึ่ง - คุณอาจได้รับผลกระทบที่ไม่พึงประสงค์
trevorgrayson

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

indexOf ไม่มีอยู่ใน IE8 และต่ำกว่าแม้ว่าจะมี polyfills อยู่ก็ตาม
Erik Honn

3

คุณสามารถทำได้ด้วย RegExp ในตัว (รูปแบบ [, แฟล็ก]]) เครื่องหมายโรงงานใน js ดังนี้:

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

ในฟังก์ชั่นโค้ด exec ด้านบนจะส่งคืนอาเรย์ที่มีสององค์ประกอบ (["-20202", "20202"]) อันที่มียัติภังค์ (-20202) และอีกอันที่ไม่มียัติภังค์ (20202) คุณควรเลือกองค์ประกอบที่สอง (ดัชนี 1)



0

ใช้นิพจน์ทั่วไปของฟอร์ม: \ w- \ d + โดยที่ \ w แทนคำและ \ d แทนตัวเลข พวกเขาจะไม่ทำงานนอกกรอบดังนั้นจึงต้องเล่น ลองนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.