Javascript substring()技巧

时间:2010-09-05 08:35:44

标签: javascript substring substr

我的网址看起来像http://mysite.com/#id/Blah-blah-blah,它用于Ajax-ey位。我想使用substring()substr()来获取id部分。 ID可以是任意长度的字母和数字的任意组合。

到目前为止,我有:

var hash = window.location.hash;
alert(hash.substring(1)); // remove #

哪个删除了前哈希,但我不是JS编码器而且我有点挣扎。除id部分外,如何删除所有内容?我不想要任何事情,包括最后的斜杠(/Blah-blah-blah)。

谢谢!

杰克

6 个答案:

答案 0 :(得分:4)

现在,这是正则表达式有意义的情况。由于字符串的长度可变,因此在此处使用子字符串将不起作用。

此代码假定id部分不包含任何斜杠。

var hash = "#asdfasdfid/Blah-blah-blah";
hash.match(/#(.+?)\//)[1]; // asdfasdfid
  • .将匹配任何字符
  • +一个或多个字符
  • 一起使用
  • ?使匹配非贪婪,以便在字符串/首次出现时停止

如果id部分可以包含额外的斜杠,而最后的斜杠是分隔符,则此正则表达式将进行出价

var hash = "#asdf/a/sdfid/Blah-blah-blah";
hash.match(/#(.+?)\/[^\/]*$/)[1]; // asdf/a/sdfid

只是为了好玩,这里的版本不使用正则表达式。

id-part中没有斜杠:

var hash = "#asdfasdfid/Blah-blah-blah",
    idpart = hash.substr(1, hash.indexOf("/"));

在id-part中使用斜杠(最后一个斜杠是分隔符):

var hash = "#asdf/a/sdfid/Blah-blah-blah",
    lastSlash = hash.split("").reverse().indexOf("/") - 1, // Finding the last slash
    idPart = hash.substring(1, lastSlash);

答案 1 :(得分:1)

也许是正则表达式

window.location.hash.match(/[^#\/]+/)

答案 2 :(得分:1)

var hash = window.location.hash;
var matches = hash.match(/#(.+?)\//);
if (matches.length > 1) {
    alert(matches[1]); 
}

答案 3 :(得分:0)

使用IndexOf确定/ after id的位置,然后使用string.substr(start,length)获取id值。

var hash = window.location.hash;
var posSlash = hash.indexOf("/", 1);
var id = hash.substr(1, posSlash -1)

你需要包含一些验证码来检查是否缺少/

答案 4 :(得分:0)

最简单的方法可能如下:

function getId() {
    var m = document.location.href.match(/\/#([^\/&]+)/);
    return m && m[1];
}

此代码不会假设ID之后的内容(如果有的话)。它会捕获的id是除了正斜杠和&符号之外的任何东西。

如果您希望它只捕获字母和数字,您可以将其更改为以下内容:

function getId() {
    var m = document.location.href.match(/\/#([a-z0-9]+)/i);
    return m && m[1];
}

答案 5 :(得分:0)

这个不是一个好方法,但如果你想要你想使用......

var relUrl = "http://mysite.com/#id/Blah-blah-blah";
var urlParts = [];
urlParts = relUrl.split("/"); // array is 0 indexed, so 
var idpart = = urlParts[3] // your id will be in 4th element
id = idpart.substring(1) //we are skipping # and read the rest 
相关问题