JavaScript에서 슬래시 뒤의 문자열 값 가져 오기


112

나는 이미 한 시간 넘게 노력하고 있으며 그것을 수행하는 올바른 방법을 알아낼 수 없습니다.

다음과 같은 것이 있습니다. foo/bar/test.html

마지막으로 모든 것을 추출하기 위해 jQuery를 사용하고 싶습니다 /. 위의 예에서 출력은 test.html.

substr및을 사용하여 수행 할 수 있다고 생각 indexOf()하지만 작동하는 솔루션을 찾을 수 없습니다.

답변:


243

최소한 세 가지 방법 :

정규식 :

var result = /[^/]*$/.exec("foo/bar/test.html")[0];

... [^/]*문자열 ( $) 의 끝에 "슬래시가 포함되지 않은 일련의 문자를 잡아라"( ) 라고 표시 됩니다. 그런 다음 인덱싱하여 반환 된 일치 개체에서 일치하는 문자를 가져옵니다 ( [0]); 일치 개체에서 첫 번째 항목은 일치하는 전체 문자열입니다. 캡처 그룹이 필요하지 않습니다.

라이브 예

lastIndexOf및 사용 substring:

var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);

lastIndexOf소리처럼 들리는 일을합니다. 문자열 에서 마지막으로 나타나는 문자 (well, string) 의 인덱스를 찾아 찾지 못하면 -1을 반환합니다. 10 번 중 9 번은 반환 값 ( if (n !== -1)) 을 확인하고 싶을 것입니다 .하지만 위의 경우 1을 추가하고 하위 문자열을 호출하기 때문에 str.substring(0)문자열을 반환하는 작업 을 끝낼 것 입니다.

사용 Array#split

Sudhir와 Tom Walters는 여기여기 에서이 내용을 다룹니다 .

var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();

split 주어진 구분 기호를 사용하여 문자열을 분할하여 배열을 반환합니다.

lastIndexOf/ substring솔루션입니다 아마 (하나는 항상 엔진이 서로 너무 급격하게 변화하기 때문에, 자바 스크립트 및 성능에 대해 아무 말도 조심해야하지만) 가장 효율적인,하지만 당신은 루프에서 시간의 수천을 수행하지 않는 한, 그것은 아무튼 중요하지 않으며 코드의 명확성을 위해 노력할 것입니다.


1
마지막 슬래시 전에 문자열을 반환하도록 어떻게 조정 하시겠습니까? (즉, 상위 폴더의 이름을 반환)
wbadart

28

jQuery는 필요하지 않으며이를 수행하는 방법은 여러 가지가 있습니다. 예를 들면 다음과 같습니다.

var parts = myString.split('/');
var answer = parts[parts.length - 1];

myString에 문자열이 포함됩니다.


3
+1 (작업용)은 jQuery가 자바 스크립트 문제에 대한 모든 최종 솔루션이 아니라는 점을 지적합니다.
Andrew Jackman 2011

1
이것은 버그가 많은 솔루션입니다. 슬러그에 슬래시를 추가하면 어떻게됩니까? 0을 반환합니다. 슬러그가 없으면 어떻게됩니까? -NaN을 반환합니다! 뭐? 잘못된 코드
Donatas Cereska 2014

1) 질문이 null이 아닌 입력과 관련이 있습니다. 2) 입력이 파일 이름으로 끝나는 입력과 관련이 있습니다 (슬래시 없음) 3) 수락 된 답변이 실제로 훨씬 더 나은 솔루션이므로 많은 찬성 투표 4) 자신 만의 솔루션을 추가 할 수 있습니다
Tom Walters 2014

12
var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));


5

문자열이 합리적으로 짧다는 것을 알면 다음 라이너를 사용합니다 ... (백 슬래시를 피하는 것을 잊지 마십시오)

// if str is C:\windows\file system\path\picture name.jpg
alert( str.split('\\').pop() );

경고 팝업 picture name.jpg


2
String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;

path.substring(pos, path.length()-pos) ;

이제 경로 문자열에 last.htm 이 있습니다 .


1

가벼운 무게

string.substring(start,end)

어디

start = Required. 추출을 시작할 위치입니다. 첫 번째 문자는 인덱스 0`에 있습니다.

end = Optional. 추출을 종료 할 위치 (포함하지 않음)입니다. 생략하면 나머지 문자열을 추출합니다.

    var string = "var1/var2/var3";

    start   = string.lastIndexOf('/');  //console.log(start); o/p:- 9
    end     = string.length;            //console.log(end);   o/p:- 14

    var string_before_last_slash = string.substring(0, start);
    console.log(string_before_last_slash);//o/p:- var1/var2

    var string_after_last_slash = string.substring(start+1, end);
    console.log(string_after_last_slash);//o/p:- var3

또는

    var string_after_last_slash = string.substring(start+1);
    console.log(string_after_last_slash);//o/p:- var3

1

Jquery :

var afterDot = value.substr(value.lastIndexOf('_') + 1);

자바 스크립트 :

var myString = 'asd/f/df/xc/asd/test.jpg'
var parts    = myString.split('/');
var answer   = parts[parts.length - 1];
console.log(answer);

'_'바꾸기 || 자신의 필요에 '/'


1

질문에서 요구하는대로 ::

var string1= "foo/bar/test.html";
  if(string1.contains("/"))
  {
      var string_parts = string1.split("/");
    var result = string_parts[string_parts.length - 1];
    console.log(result);
  }  

URL에 대한 질문 ( '='이 한 번 발생하도록 요청 됨) :
[ http://stackoverflow.com/questions/24156535/how-to-split-a-string-after-a-particular-character-in -jquery] [1]

var string1= "Hello how are =you";
  if(string1.contains("="))
  {
      var string_parts = string1.split("=");
    var result = string_parts[string_parts.length - 1];
    console.log(result);
  }

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.