Я получил несколько длинных URL в моем Json, и я пытаюсь найти лучший способ показать только домен, используя фильтр angular или, может быть, просто какой-нибудь javascript?

http://www.example.com/page-with-a-long-long-long-OMG-so-long-name.html

К

Www.example.com

Спасибо !

4
Shipow 30 Янв 2013 в 04:56

4 ответа

Лучший ответ

В AngularJS действительно легко создать свой собственный фильтр:

app.filter( 'domain', function () {
  return function ( input ) {
    var matches,
        output = "",
        urls = /\w+:\/\/([\w|\.]+)/;

    matches = urls.exec( input );

    if ( matches !== null ) output = matches[1];

    return output;
  };
});

Который вы можете легко назвать по вашему мнению:

<span>{{ myUrl | domain }}</span>

Вот Plunker: http://plnkr.co/edit/bVSv7n?builder&p=preview

Это супер-простое регулярное выражение, которое вы, вероятно, захотите расширить, но оно работает!

13
Josh David Miller 30 Янв 2013 в 01:39

Этот угловой фильтр тоже подойдет!

Это действительно круто и просто, потому что он использует браузеры, встроенные в функцию анализа URI, вместо того, чтобы полагаться на регулярное выражение.

angular.module('myCoolApp')
  .filter('urlFilter', function ($document) {
    return function (input) {
      var parser = document.createElement('a');
      parser.href = input;
      return parser.hostname;
  };
});

Вы можете реализовать это по вашему мнению, как это.

{{ myLongURL | urlFilter }}

Если myLongURL http: // www .example.com / page-with-long-long-long-OMG-so-long-name.html, затем он будет отображаться как example.com после прохождения через фильтр. Если вы хотите www. в начале, вы можете просто сделать это!

www.{{myLongURL | urlFilter}}
7
Benjamin Conant 5 Апр 2015 в 21:11

Используйте location.hostname, чтобы получить домен без начислений ,

http://fiddle.jshell.net/TUeJ7/

0
leepowers 30 Янв 2013 в 01:10

Я создал этот фильтр

angular.module('App').filter( 'domainOfUrl',['$filter',function ($filter) {
  return function ( input ) {
     var urlParts = input.split('/');      
    return urlParts[2];
  };
}]);

Вышеупомянутый фильтр работает так:

Вход: https://www.amazon.in/b/ref=s9_acss_bw_***_x

Вывод: www.amazon.in

используйте $filter, если хотите.

0
Krunal 31 Авг 2017 в 15:08