자바 스크립트에서 대시 문자열 뒤에있는 모든 것을 가져옵니다.


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있습니까?
Istiaque Ahmed

17
@IstiaqueAhmed 질문이 매우 구체적인 형식에 대해 구체적으로 언급되지 않은 경우 : "내 문자열은 다음과 같습니다 : sometext-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
여러 분리 문자로 작업하는 경우이 솔루션이 가장 좋습니다.
0:08 에단 키 일리

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는 모두 substring()indexOf()모질라와 IE에서 모두 지원된다. 그러나 일부 브라우저의 이전 버전 (예 : Netscape / Opera)에서는 substr ()이 지원되지 않을 수 있습니다.

귀하의 게시물에 substring()및 사용 방법을 이미 알고 있음을 나타내 indexOf()므로 코드 샘플을 게시하지 않습니다.


실제로는 응용 프로그램에 따라 분할보다 더 나은 솔루션입니다. 둘 이상인 경우 원하지 않는 결과가 발생할 수 있기 때문입니다.
trevorgrayson 2016 년

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

polyfill이 존재하지만 indexOf는 IE8 이하에는 존재하지 않습니다.
Erik Honn

3

js의 내장 RegExp (pattern [, flags]) 팩토리 표기법으로 다음과 같이 할 수 있습니다.

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.