Powiedzmy, że mam adres URL:

http://something.com/somethingheretoo

I chcę dostać to, co jest po trzeciej instancji /?

Coś w rodzaju odpowiednika indexOf(), co pozwala mi wejść, który instancja ukierunkowanego ukośnika.

8
Itai Sagi 27 wrzesień 2011, 17:49

8 odpowiedzi

Najlepsza odpowiedź

Jeśli wiesz, że zaczyna się od http:// lub https://, po prostu pomiń tę część z tym częścią one-liner :

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

Daje to większą elastyczność, jeśli w tym segmencie znajdują się wiele cięć.

7
Kelly 27 wrzesień 2011, 14:06
s = 'http://something.com/somethingheretoo';
parts = s.split('/');
parts = parts.slice(0, 2);
return parts.join('/');
3
PiTheNumber 12 styczeń 2017, 17:03

Wypróbuj coś w rodzaju następującej funkcji, co zwróci indeks NTH wystąpienia strumienia wyszukiwania S, czy -1, jeśli istnieją n-1 lub mniej meczów.

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"

Oczywiście, jeśli nie chcesz dodawać funkcji do ciągów

2
nnnnnn 27 wrzesień 2011, 14:30

Jeśli chcesz trzymać się 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);

Jeśli chcesz uzyskać ścieżkę tego podanego adresu URL, możesz również użyć Re:

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

To ponownie wyszukuje "//", akceptuje wszystko między "//" a następnym "/" i zwraca obiekt. Ten obiekt ma kilka właściwości. Propers [1] zawiera podłożenie po trzeciej {x4}}.

1
Rob W 27 wrzesień 2011, 13:52

Innym podejściem jest użycie funkcji "Split" JavaScript:

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

Splitdword [0] wróci "ja"

Splitdword [1] wróci "Ty"

Splitdword [2] wróci "coś"

1
bjornruysen 27 wrzesień 2011, 13:54

Brzmi tak, jak chcesz pathname. Jeśli jesteś w przeglądarce, trzymaj a element poręczny ...

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

... i niech zrobimy dla ciebie parsowanie.

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

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

demo: http://jsfiddle.net/2qt9c/

1
user113716 27 wrzesień 2011, 14:10

W twoim przypadku można użyć metody lastIndexOf(), aby uzyskać 3rd naprzód.

0
Pat 27 wrzesień 2011, 13:52

Oto bardzo fajny sposób obsługi tego: