답변:
이 시도:
function someFunction(site)
{
return site.replace(/\/$/, "");
}
return site.replace(/\/+$/, "");
function stripTrailingSlash(str) {
if(str.substr(-1) === '/') {
return str.substr(0, str.length - 1);
}
return str;
}
참고 : IE8 및 이전 버전은 음의 substr 오프셋을 지원하지 않습니다. str.length - 1
고대 브라우저를 지원해야하는 경우 대신 사용하십시오 .
ES6 / ES2015는 문자열이 무언가로 끝나는 지 묻는 API를 제공하여보다 깔끔하고 읽기 쉬운 기능을 작성할 수 있습니다.
const stripTrailingSlash = (str) => {
return str.endsWith('/') ?
str.slice(0, -1) :
str;
};
str
에서 /
슬래시 로 끝나는 경우가 누락되었음을 의미합니다 . 두 개의 어설 션 (또는 두 개의 테스트)이 있어야합니다. 하나는 슬래시가 있고 다른 하나는없는 것입니다.
정규식을 사용합니다.
function someFunction(site)
{
// if site has an end slash (like: www.example.com/),
// then remove it and return the site without the end slash
return site.replace(/\/$/, '') // Match a forward slash / at the end of the string ($)
}
site
그러나 변수 가 문자열 인지 확인하고 싶을 것 입니다.
이 스 니펫이 더 정확합니다.
str.replace(/^(.+?)\/*?$/, "$1");
/
유효한 URL이므로 문자열을 제거하지 않습니다 .나는 슬래시 후행에 관한 질문을 알고 있지만 사람들 이이 솔루션을 필요로하기 때문에 슬래시 트리밍 (문자열 리터럴의 꼬리와 머리 모두)을 검색하는 동안이 게시물을 찾았습니다.
'///I am free///'.replace(/^\/+|\/+$/g, ''); // returns 'I am free'
최신 정보 :
로 @Stephen R이 코멘트에 언급 둘 다 슬래시와 꼬리와 문자열 리터럴의 머리에 백 슬래시를 모두 제거하려면, 당신은 작성합니다 :
'\/\\/\/I am free\\///\\\\'.replace(/^[\\/]+|[\\/]+$/g, '') // returns 'I am free'
.replace(/^[\\/]+|[\\/]+$/g, '')
@vdegenne의 답변을 바탕으로 ... 제거하는 방법 :
단일 후행 슬래시 :
theString.replace(/\/$/, '');
단일 또는 연속 후행 슬래시 :
theString.replace(/\/+$/g, '');
단일 선행 슬래시 :
theString.replace(/^\//, '');
단일 또는 연속 선행 슬래시 :
theString.replace(/^\/+/g, '');
단일 선행 및 후행 슬래시 :
theString.replace(/^\/|\/$/g, '')
단일 또는 연속 선행 및 후행 슬래시 :
theString.replace(/^\/+|\/+$/g, '')
모두 슬래시 및 처리하기 위해 다시 슬래시의 인스턴스 교체 \/
로를[\\/]
function someFunction(site) {
if (site.indexOf('/') > 0)
return site.substring(0, site.indexOf('/'));
return site;
}
subtring
? 그 외에도 첫 번째 슬래시와 그 이후의 모든 것을 제거합니다.
substring
없습니까? 또한 네, 첫 번째 슬래시와 그 이후의 모든 것을 제거하려고했습니다.