我正在尝试替换一系列url字符串中的最后一个正斜杠,将这个正斜杠换成一个数字符号,就像这样 -
http://example.com/about/our-company
到
http://example.com/about#our-company
在jQuery中使用JS我尝试在每个字符串上应用replace函数,但不确定如何仅针对最后一个正斜杠。
$('.submenu a').each(function() {
var url = $(this).attr('href');
url = url.replace(/\//g, '#');
console.log(url);
// replaces all
});
答案 0 :(得分:5)
试试这个:
var str = "http://one/two/three/four";
console.log(str.replace(/\/(?=[^\/]*$)/, '#'));
这就是说:“替换斜线后面没有任何东西或者不包含另一个斜杠的字符,直到最后。”
答案 1 :(得分:2)
您可以尝试根据/
分割网址:
url = 'http://example.com/about/our-company';
tokens = url.split('/');
expected_url = tokens.slice(0, tokens.length-1).join('/') + '#' + tokens[tokens.length-1];
console.log(expected_url);
# Prints 'http://example.com/about#our-company'
答案 2 :(得分:1)
$('.submenu a').each(function() {
var url = $(this).attr('href');
var idx = url.lastIndexOf("/");
url = url.substring(0, idx) + '#' + url.substring(idx+1);
console.log(url);
});
答案 3 :(得分:1)
一个简单的解决方案:
var str="http://example.com/about/our-company";
var tmp=str.split("").reverse().join("");
tmp=tmp.replace("/","#");
str=tmp.split("").reverse().join("");
//output:
str = http://example.com/about#our-company