如何从不需要的部分剥离字符串?

时间:2017-01-23 13:30:03

标签: javascript jquery imdb

给出这样的网址:

https://images-na.ssl-images-amazon.com/images/M/MV5BMTM3MTc3OTc0NF5BMl5BanBnXkFtZTcwOTQ0OTM1MQ@@._V1._CR34,0,295,440_UX32_CR0,0,32,44_AL_.jpg

我如何让它像

https://images-na.ssl-images-amazon.com/images/M/MV5BMTM3MTc3OTc0NF5BMl5BanBnXkFtZTcwOTQ0OTM1MQ@@._V1._CR34,44_AL_.jpg

我遇到的问题是使用以下方法检索IMDB海报图片:

$('form[name="search-imdb"]').on("submit", function(e) {
  var form = $(this);
  e.preventDefault();
  $.ajax({
     url: "http://imdb.wemakesites.net/api/search",
     data: form.serialize(), // assuming the form has a hidden input with api_key name, containing your API key
     crossDomain: true,
     dataType: "jsonp",
     success: function(data) {
       window.console.log(data);
     }
  });
});

我得到了一个json响应:

"thumbnail": "https://images-na.ssl-images-amazon.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_UX32_CR0,0,32,44_AL_.jpg"

我没有海报,the api i am using没有帮助,但是缩略图包含各种格式,其中一种是44_al,这就是我想留下的字符串为了输出它,如:

function imdbLoad() {
  var form = $("#usp-title").val();
  var encodedTerm = encodeURIComponent(form);
        $.ajax({
           url: "http://imdb.wemakesites.net/api/search",
           data: {
             q: encodedTerm
           },
           crossDomain: true,
           dataType: "jsonp",
           success: function(data) {
             $("#imdb").empty();
             $.each(data.data.results, function(i, items) {
               $("#imdb").append('<h2>'+i+'</h2>');
               $.each(items, function(k, item) {
                 $("#imdb").append("<div class='col-xs-12 col-md-4'><div class='thumbnail'><img class='img-responsive' src='"+ item.thumbnail +"'><div class='caption'><h3>"+ item.title +"</h3><p>"+ item.title +"</p></div></div>");
               });
             });
           }
        });
}

除非有任何其他方法可以获取海报网址

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式替换不需要的字符串部分

var url = "https://images-na.ssl-images-amazon.com/images/M/MV5BMTM3MTc3OTc0NF5BMl5BanBnXkFtZTcwOTQ0OTM1MQ@@._V1._CR34,0,295,440_UX32_CR0,0,32,44_AL_.jpg"
var regex = /,.*(?=,)/g;
console.log(url.replace(regex, ''))

或使用逗号(,)拆分并加入第一个和最后一个部分。

var url = "https://images-na.ssl-images-amazon.com/images/M/MV5BMTM3MTc3OTc0NF5BMl5BanBnXkFtZTcwOTQ0OTM1MQ@@._V1._CR34,0,295,440_UX32_CR0,0,32,44_AL_.jpg"

var parts = url.split(',');
console.log(parts[0] + ',' + parts.pop())

答案 1 :(得分:0)

这是一个更长的代码,因为我已经包含了一些位,例如限制结果的数量,但基本上我注意到的是@@之后整个字符串是关于图像大小的。因此,我可以简单地将维度添加到URL作为字符串,而不是使用正则表达式(这将是这个特定问题的答案):

<img class='img-responsive' src='"+ thumbnailMod[0] + "@._V1_UX500_CR0,0,500,550_AL_.jpg'>

完整代码

$('form[name="search-imdb"]').on("submit", function(e) {
  var form = $(this);
  e.preventDefault();
  $.ajax({
    url: "http://imdb.wemakesites.net/api/search",
    data: {
      api_key: "...",
      q: form.find('input[name="q"]').val()
    },
    crossDomain: true,
    dataType: "jsonp",
    success: function(data) {
      $("#imdb").empty();
      var thumbnailMod, limiteRes = 1;
      if (data.data.results.titles !== undefined) {
        $("#imdb").append('<h2>Titles</h2>');
        $.each(data.data.results.titles, function(i, item) {
          thumbnailMod = item.thumbnail.split('@.');
          if (thumbnailMod.length > 1) {
            if (limiteRes > 3) {
                return;
            }
            limiteRes++;
            $("#imdb").append("<div class='col-xs-12 col-md-4'><div class='thumbnail'><img class='img-responsive' src='"+ thumbnailMod[0] + "@._V1_UX500_CR0,0,500,550_AL_.jpg'><div class='caption'><h3>"+ item.title +"</h3><p>"+ item.title +"</p></div></div>");
          }
        });

      } else {
        console.log('No titles found for this search.');
      }
    }
  });
});