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

How to strip a string from unwanted parts?

给出这样的 url:

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>");
               });
             });
           }
        });
}

除非谁有别的办法抢海报url

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

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.');
      }
    }
  });
});