http://localhost:3000/myname
http://localhost:3000/myname#&gid=1&pid=1
我能够myname
使用location.href.split('/')[3];
,但第二个网址失败了。如何有一个额外的逻辑,放弃启动#和以下字符?
答案 0 :(得分:2)
您想只获取该位置的路径组件吗?
这不需要拆分或其他字符串操作,因为已经完成了所有工作:location.pathname
(好吧,不是所有工作,如果你不想要领先的斜杠。但是这应该是无关紧要的,可以使用substr(ing)或其他东西。)< / p>
编辑:您在评论中询问,是否会“#34;仍在工作&#34;如果你有localhost:3000/myname/a/b/c
。首先,取决于你实际需要做什么,考虑它&#34;工作。&#34;您原来的问题并不清楚 - 下次,请尝试将此类案例和预期结果包括在内。
如果你需要单独的路径中的所有文件夹名称,那么你仍然可以使用拆分 - 但在location.pathname上使用它,那么你不必处理哈希。并且由于值以斜杠开头,并且会在拆分结果中产生一个空的第一个元素,您可能只想使用Array.shift抛出那个元素:
var pathparts = location.pathname.split('/');
pathparts.shift();
console.log(pathparts);
答案 1 :(得分:0)
只需使用replace()
和slice()
var temp_name = location.href.replace(/http:\/\/localhost:3000\//, "");
var my_name = temp_name.match(/#/) ? temp_name.slice(0, temp_name.indexOf("#")) : temp_name;
这里的诀窍是,如果存在主题标签,则只切片temp_name。
答案 2 :(得分:0)
您可以使用location.href.substring(0, location.href.indexOf('#'));
答案 3 :(得分:0)
您可以使用锚元素,然后使用hostname。
var a = document.createElement('a');
a.href='http://localhost:3000/myname/a/b/c/?gid=1&pid=1#hash'
console.log(a.host);
console.log(a.hostname);
console.log(a.pathname);
console.log(a.search);
console.log(a.hash);
&#13;
答案 4 :(得分:0)
或者只是在vanillia中的基础:
var string = "http://localhost:3000/myname#&gid=1&pid=1";
var result = string.split('/')[3].split("#")[0];
console.log(result); // myname
答案 5 :(得分:0)
var m = /\/(.[^#]*)/.exec(location.pathname);
var result = m ? m[1] : "";