Ответ 1
Попробуйте следующее:
function someFunction(site)
{
return site.replace(/\/$/, "");
}
У меня есть две переменные:
site1 = "www.somesite.com";
site2 = "www.somesite.com/";
Я хочу сделать что-то вроде этого
function someFunction(site)
{
// If the var has a trailing slash (like site2),
// remove it and return the site without the trailing slash
return no_trailing_slash_url;
}
Как это сделать?
Попробуйте следующее:
function someFunction(site)
{
return site.replace(/\/$/, "");
}
function stripTrailingSlash(str) {
if(str.substr(-1) === '/') {
return str.substr(0, str.length - 1);
}
return str;
}
Примечание. IE8 и более старые не поддерживают отрицательные смещения субстрата. Используйте str.length - 1
вместо этого, если вам нужно поддерживать эти древние браузеры.
ES6/ES2015 предоставляет API для запроса, заканчивается ли строка чем-то, что позволяет писать более чистую и удобную для чтения функцию.
const stripTrailingSlash = (str) => {
return str.endsWith('/') ?
str.slice(0, -1) :
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'
UPDATE:
как упоминалось в комментариях @Stephen R, если вы хотите удалить как косую черту, так и обратную косую черту как в хвостовой части, так и в начале строкового литерала, вы должны написать:
'\/\\/\/I am free\\///\\\\'.replace(/^[\\/]+|[\\/]+$/g, '') // returns 'I am free'
Легкий способ, о котором я знаю, это
function stipTrailingSlash(str){
if(srt.charAt(str.length-1) == "/"){ str = str.substr(0, str.length - 1);}
return str
}
Затем будет проверяться на/на конце, и если его там удалить, если он не вернет вашу строку, как она была
Только одно, что я пока не могу прокомментировать @ThiefMaster ничего себе вы не заботитесь о памяти, вы lol runnign substr только для if?
Исправлено калибровка для индекса на основе нуля.
Вот небольшой пример URL.
var currentUrl = location.href;
if(currentUrl.substr(-1) == '/') {
currentUrl = currentUrl.substr(0, currentUrl.length - 1);
}
запишите новый URL
console.log(currentUrl);
function stripTrailingSlash(text) {
return text
.split('/')
.filter(Boolean)
.join('/');
}
другое решение.
На основании ответа @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;
}