使用拆分并丢弃javascript中的后续字符

时间:2016-09-23 16:55:22

标签: javascript

http://localhost:3000/myname
http://localhost:3000/myname#&gid=1&pid=1

我能够myname使用location.href.split('/')[3];,但第二个网址失败了。如何有一个额外的逻辑,放弃启动#和以下字符?

6 个答案:

答案 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

&#13;
&#13;
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;
&#13;
&#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] : "";