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



给定一个这样的网址:

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"

没有得到海报,我使用的 api 没有帮助,但该缩略图图像包含各种格式,其中一种是 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>");
               });
             });
           }
        });
}

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

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

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())

这是一个更长的代码,因为我包含了一些位,例如限制结果数量,但基本上我注意到的是,在@@之后,整个字符串是关于图像大小的。因此,与其使用正则表达式(这将是这个特定问题的答案),我可以简单地将维度作为字符串添加到 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.');
      }
    }
  });
});

最新更新