Programing

문자의 마지막 발생 전에 모든 것을 제거

lottogame 2020. 12. 1. 07:31
반응형

문자의 마지막 발생 전에 모든 것을 제거


문자열에 대해 다음 작업을 수행하려고합니다.

  • 문자의 마지막 발생을 찾습니다 "/".
  • 그 캐릭터 앞의 모든 것을 제거하십시오.
  • 문자열의 나머지를 반환합니다.

좀 더 명확하게하기 위해 다음 문자열이 있다고 가정 해 보겠습니다.

var string = "/Roland/index.php"; // Which is a result of window.location.pathname

이제 추출해야 할 것은 실제 페이지를 제외한 모든 것입니다.

var result = "index.php" // Which is what I need to be returned

물론 이것은 단지 예일뿐입니다. 분명히 다른 페이지를 가질 것이기 때문에 동일한 원칙이 적용됩니다.

누군가가 해결책으로 나를 도울 수 있는지 궁금합니다. 다음 조치를 시도했지만 성공하지 못했습니다.

var location = window.location.pathname;
var result = location.substring(location.lastIndexOf["/"]);

괄호를 괄호로 바꾸면 올바른 아이디어가 있습니다.

var string = "/Roland/index.php";
var result = string.substring(string.lastIndexOf("/") + 1);

다음은 jsfiddle 의 예 이며 여기에 Mozilla Developer Network 의 .lastIndexOf () 메서드에 대한 설명이 있습니다.


개인적으로 정규 표현식을 사용합니다.

var result = string.replace(/^.*\/(.*)$/, "$1");

정규식에 익숙하다면 (그렇지 않다면 :-) 익숙하지 않을 때만 큼 외계인처럼 보이지 않습니다.

선행 ^은이 정규식이 문자열의 시작 부분에서 일치 항목을 "고정"하도록합니다. \/하나의 일치 /문자 ((가) \을 유지하는 것입니다 /정규 표현식 파서를 혼동). 그런 다음 에서 문자열의 끝까지 (.*)$다른 모든 항목을 /찾습니다. 이니셜 .*/마지막 문자 앞의 문자를 포함하여 가능한 한 많이 삼킬 것입니다. 대체 텍스트 "$1"는 "첫 번째로 일치하는 그룹의 내용"을 의미하는 특수한 형식입니다. 이 정규식에는 마지막 .*(에서 (.*)$)을 괄호로 묶은 그룹이 있습니다. 그것은 마지막 이후의 모든 것입니다./, 따라서 전체적인 결과는 전체 문자열이 해당 항목으로 대체된다는 것입니다. ( /문자 가 없어 패턴이 맞지 않으면 아무 일도 일어나지 않습니다.)


에 배열로 문자열을 분할 /하고 .pop()마지막 요소 끕니다. 슬래시가있는 경우 먼저 후행 슬래시를 제거해야합니다.

var locationstring = window.location.pathname;
// replace() the trailing / with nothing, split on the remaining /, and pop off the last one
console.log(locationstring.replace(/\/$/, "").split('/').pop());

/path/stuff/here/후행이 있는 URL과 같은 /경우이 경우가 아닌 빈 문자열을 반환해야하는 경우 here위를 수정 .replace()하여 호출 체인에서을 제거하십시오 . 후행 슬래시에 관계없이 마지막 구성 요소를 원한다고 가정했지만 잘못 가정했을 수 있습니다.

console.log(locationstring.split('/').pop());

    var result = /\/([^\/]*)$/.exec(location)[1];

//"remove-everything-before-the-last-occurrence-of-a-character#10767835"

참고 : location여기에있다 window.location, 아닌 var location.


var string = "/Roland/index.php";
var result = string.substring(0, string.lastIndexOf("/") + 0);

참고 URL : https://stackoverflow.com/questions/10767815/remove-everything-before-the-last-occurrence-of-a-character

반응형