9

假设我有一个网址:

http://something.com/somethingheretoo

我想得到第三个实例之后是/什么?

类似的东西indexOf()可以让我输入我想要的反斜杠实例。

4

9 回答 9

8

如果您知道它以http://or开头,只需使用以下单行https://符跳过该部分:

var content = aURL.substring(aURL.indexOf('/', 8));

如果您想要的该段中有多个斜杠,这将为您提供更大的灵活性。

于 2011-09-27T13:52:39.583 回答
4
let s = 'http://something.com/somethingheretoo';
parts = s.split('/');
parts.splice(0, 2);
return parts.join('/');
于 2011-09-27T13:53:11.733 回答
2

尝试类似下面的函数,它将返回搜索字符串 s 第 n 次出现的索引,如果有 n-1 或更少的匹配,则返回 -1。

String.prototype.nthIndexOf = function(s, n) {
  var i = -1;
  while(n-- > 0 && -1 != (i = this.indexOf(s, i+1)));
  return i;
}

var str = "some string to test";

alert(str.nthIndexOf("t", 3)); // 15
alert(str.nthIndexOf("t", 7)); // -1
alert(str.nthIndexOf("z", 4)); // -1

var sub = str.substr(str.nthIndexOf("t",3)); // "test"

当然,如果您不想将该函数添加到 String.prototype 中,您可以通过添加另一个参数来传递您要搜索的字符串,将其作为独立函数。

于 2011-09-27T14:30:06.803 回答
1

如果你想坚持indexOf

var string = "http://something/sth1/sth2/sth3/"
var lastIndex = string.indexOf("/", lastIndex);
lastIndex = string.indexOf("/", lastIndex);
lastIndex = string.indexOf("/", lastIndex);
string = string.substr(lastIndex);

如果要获取给定 URL 的路径,还可以使用 RE:

string = string.match(/\/\/[^\/]+\/(.+)?/)[1];

这个 RE 搜索 " //",接受 " //" 和下一个 " /" 之间的任何内容,并返回一个对象。这个对象有几个属性。属性[1]包含第三个之后的子字符串/

于 2011-09-27T13:52:07.260 回答
1

另一种方法是使用 Javascript 的“拆分”功能:

var strWord = "me/you/something";
var splittedWord = strWord.split("/");

splittedWord[0] 将返回“我”

splittedWord[1] 将返回“你”

splittedWord[2] 将返回“某物”

于 2011-09-27T13:54:34.030 回答
1

听起来你想要pathname. 如果您在浏览器中,请随身a携带一个元素...

var _a = document.createElement('a');

...并让它为您进行解析。

_a.href = "http://something.com/somethingheretoo";

alert( _a.pathname.slice(1) );  // somethingheretoo

演示:http: //jsfiddle.net/2qT9c/

于 2011-09-27T14:10:42.717 回答
0

在您的情况下,您可以使用该lastIndexOf()方法获取第三个正斜杠。

于 2011-09-27T13:52:26.490 回答
0

这是一种非常酷的处理方式: 如何删除字符串中直到并包括第三个斜杠的所有字符?

我对建议的解决方案的偏好是

var url = "http://blablab/test/page.php";
alert(url.split("/")[3]);
//-> "test"
于 2013-04-22T08:41:17.283 回答
0

代替使用indexOf它可以这样做:

const url = 'http://something.com/somethingheretoo';
const content = new URL(url).pathname.slice(1);
于 2021-03-12T11:48:59.027 回答