Javascript substring()技巧

Javascript substring()技巧,javascript,substring,substr,Javascript,Substring,Substr,我有一个URL,看起来像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部分之外的所有内容?我也不想要任何东西,包括最后的

我有一个URL,看起来像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部分之外的所有内容?我也不想要任何东西,包括最后的斜杠

谢谢

杰克也许是个正则表达式

window.location.hash.match(/[^#\/]+/)
也许是正则表达式

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

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

此代码将假定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部分中没有斜线:

var hash = "#asdfasdfid/Blah-blah-blah",
    idpart = hash.substr(1, hash.indexOf("/"));
id部分中有斜杠时,最后一个斜杠是分隔符:

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

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

此代码将假定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部分中没有斜线:

var hash = "#asdfasdfid/Blah-blah-blah",
    idpart = hash.substr(1, hash.indexOf("/"));
id部分中有斜杠时,最后一个斜杠是分隔符:

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

使用IndexOf确定/after id的位置,然后使用string.substrstart、length获取id值

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

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

使用IndexOf来确定/after id的位置,然后使用string.substrstart,length来获取id值

var hash = window.location.hash;
var posSlash = hash.indexOf("/", 1);
var id = hash.substr(1, posSlash -1)
var hash = window.location.hash;
var matches = hash.match(/#(.+?)\//);
if (matches.length > 1) {
    alert(matches[1]); 
}

您需要包含一些验证代码来检查是否存在/

最简单的方法可能是:

var hash = window.location.hash;
var matches = hash.match(/#(.+?)\//);
if (matches.length > 1) {
    alert(matches[1]); 
}
function getId() {
    var m = document.location.href.match(/\/#([^\/&]+)/);
    return m && m[1];
}
function getId() {
    var m = document.location.href.match(/\/#([a-z0-9]+)/i);
    return m && m[1];
}
这段代码根本不假设id后面有什么。它将捕获的id是除正斜杠和符号之外的任何内容

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

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

最简单的方法可能是:

function getId() {
    var m = document.location.href.match(/\/#([^\/&]+)/);
    return m && m[1];
}
function getId() {
    var m = document.location.href.match(/\/#([a-z0-9]+)/i);
    return m && m[1];
}
这段代码根本不假设id后面有什么。它将捕获的id是除正斜杠和符号之外的任何内容

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

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

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

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 

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

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 

这个正则表达式只匹配1个字符。这个正则表达式只匹配1个字符。@Erik,他没有使用子字符串。第二个参数是长度,所以这是正确的。@Erik,他没有使用子字符串。第二个参数是长度,因此这是正确的。它应该是[1],因为您需要捕获的组。它应该是[1],因为您需要捕获的组。