我有一些问题以我想要的方式分解字符串。我有这样的网址:
http://SomeAddress.whatever:portWhatever/someDirectory/TARGETME/page.html
我正在尝试使用substring和indexOf而不是regex来获取字符串上的TARGETME部分。这是我现在正在使用的功能:
function lastPartofURL() {
// Finding Url of Last Page, to hide Error Login Information
var url = window.location;
var filename = url.substring(url.lastIndexOf('/')+1);
alert(filename);
}
然而,当我写这篇文章时,我的目标是“page.html”部分,这就是它返回的内容,但是我无法重新配置它以完成我现在要做的事情。
如果可能的话,我希望它来自字符串的开头而不是结尾,因为在我尝试定位之前应该总是有一个url然后是一个目录,但我对这两个目录感兴趣的解决方案。
这是一个类似的正则表达式,但它不安全(根据JSLint),因此我不介意用更实用的东西替换它。
/^.*\/.*\/TARGETME\/page.html.*/
答案 0 :(得分:7)
正如其他人已经回答的那样,.split()
对你的情况有好处,但假设你的意思是返回URL的“前一部分”(例如,同时返回http://SomeAddress.whatever:portWhatever/dirA/DirB/TARGETME/page.html
的“TARGETME”)然后你不能使用固定数字,而是在数组的最后一个之前取项目:
function BeforeLastPartofURL() {
var url = window.location.href;
var parts = url.split("/");
var beforeLast = parts[parts.length - 2]; //keep in mind that since array starts with 0, last part is [length - 1]
alert(beforeLast);
return beforeLast;
}
答案 1 :(得分:3)
您可以使用string.split()
...
function getPath() {
var url = window.location;
var path = url.split("/")[4];
alert(path);
return path;
}
我只建议使用此方法,因为您说您将始终知道URL的格式。
答案 2 :(得分:1)
function lastPartofURL() {
// Finding Url of Last Page, to hide Error Login Information
var url = window.location;
var arr = url.split('/');
alert(arr[4]);
}
请参阅here
答案 3 :(得分:1)
试试这个
function lastPartofURL() {
// Finding Url of Last Page, to hide Error Login Information
var url = window.location;
var sIndex = url.lastIndexOf('/');
var dIndex = url.lastIndexOf('.', sIndex);
if (dotIndex == -1)
{
filename = url.substring(sIndex + 1);
}
else
{
filename = url.substring(sIndex + 1, dIndex);
}
alert(filename);
}