Javascript substring()技巧
我有一个URL,看起来像http://mysite.com/id/Blah-blah-blah,用于Ajax和ey位。我想使用substring或substr来获取id部分。ID可以是任意长度的字母和数字的任意组合 到目前为止,我得到了: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部分之外的所有内容?我也不想要任何东西,包括最后的
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],因为您需要捕获的组。