如何从搜索输入中删除空格,使其匹配 API 标签(没有空格的标签)?

How do I remove spaces from search input so that it matches an API tag (one which has no spaces)?

var $hashSearch = $('#hash-search');
var $text = $('#hashtag');
var $results = $('#results');
var $hashTemp = _.template($('#hash-template').html());

$hashSearch.on('submit', function(event){
event.preventDefault();
console.log('submitted form')

var searchHash = $text.val(); //strip spacing from search


$.ajax({
    type: 'GET',
    url:'https://api.instagram.com/v1/tags/' + searchHash + '/media/recent?client_id=XXXXXXXXXXXXXXX', 
    dataType: 'jsonp',
    crossDomain: true,
    success: function(data){
        var getImageArray = (data.data[0].images.low_resolution.url)
        var getCapArray = (data.data[0].tags.text)
        _.each(data.data, function(obj){
            var image = (obj.images.low_resolution.url);
            var text = (obj.caption.text);
            var list = new HashList( image, text);
            console.log(image, text);

            list.save();

            list.render();
        });
        }
    });
});

我正在为我的项目使用 Instagram 的 API。在我的主页上,用户输入内容,提交后会显示与搜索内容相关的照片列表。如果用户在 WITH 空格中键入值,则会发生错误,因为所有标记都没有空格列出。有什么方法可以遍历每个搜索以过滤和删除间距?

一种解决方案是在将输入值分配给 searchHash

时删除空格
var searchHash = $text.val().replace(/\s/g, '');

使用正则表达式:

 var searchHash = $text.val();
 searchHash = searchHash.replace(/\s/g, '');

\s 是 "whitespace" 的正则表达式,g 是 "global" 标志,表示匹配所有 \s(空格)。

如果您想从搜索词中删除 space,则必须在 ajax 上方添加以下代码:

searchHash = searchHash.replace(/ /g,"");

它将替换字符串中的 space。

如果你想搜索多个标签,试试这个看看它是否有效(出于明显的原因我不能测试这个):

  1. 将 spaces 替换为 space 的 HTML 代码,因为这将导致您的 HTTPS 请求不会中断,开头为:var searchHash = $text.val().replace(/\s/g, '%20');
  2. 使用略有不同的 API 调用:url:'https://api.instagram.com/v1/tags/search?q=' + searchHash + '/media/recent?client_id=XXXXXXXXXXXXXXX',

这应该导致如下查询:https://api.instagram.com/v1/tags/search?q=fireworks%20explosions%20and%20grand%20finales/media/recent?client_id=XXXXXXXXXXXXXXX

祝你好运!