Проверка JQuery и удаление косой черты с конца URL-адреса

В jQuery script у меня есть строка кода, которая получает строку текущего URL:

var target = $(this).attr('href');

Может ли код в этом script проверить, есть ли коса в конце строки URL. Если он присутствует, то удалите его? Каким образом это можно сделать, вы могли бы порекомендовать?

Ответ 1

Я бы сделал это:

 target = target.replace(/\/$/, '');

Теперь, если вам нужно беспокоиться о наличии строки запроса:

 <a href='http://foo.bar.com/something/?param=xyz'>hi</a>

тогда все становится немного сложнее. Разбор URL с регулярным выражением, вероятно, возможен, но он довольно грязный. Если вам это удастся, ограничьте возможности того, как выглядят ваши URL-адреса, чтобы вам не пришлось использовать какой-то большой огромный "официальный" шаблон.

Ответ 2

Это также должно быть безопасно для URL-адресов с строками запросов, и оно не использует регулярное выражение....

var urlEnd = target.indexOf("?");
if(urlEnd == -1){
    urlEnd = target.length;
}

// Don't bother doing anything if the URL is empty
if (urlEnd > 0){
    if (target[urlEnd - 1] == "/"){
        $(this).attr('href', target.substr(0, urlEnd-1) + target.substr(urlEnd));
    }    
}

Ответ 3

Предполагая, что вы имеете в виду косую черту, одним из возможных решений было бы следующее:

var l = target.length - 1;
if(target.lastIndexOf('/') === l) {
    target = target.substring(0, l);
}

Ответ 4

Вы можете сделать это с помощью регулярного выражения, например:

target.replace(//+ ((\? | #). *)? $/, '$ 1');

Что должно сохранить строки запроса или фрагменты URL-адреса в конце URL-адреса.