【问题标题】:Split string by hashtag and save into array with jQuery?按标签拆分字符串并使用jQuery保存到数组中?
【发布时间】:2013-08-18 13:28:33
【问题描述】:

我有一个 var,它有一个包含一系列单词的字符串,其中一些带有标签,例如:

var words = "#hashtagged no hashtag #antoherhashtag";

我想将每个带标签的单词保存到一个数组中,有点像:

var tagslistarr = words.split(' ');

但我不确定如何让# 和空格包围的字符。

有没有一种特殊的方法可以做到这一点?我打算用一些 ASCII 字符来识别它吗?

【问题讨论】:

    标签: javascript jquery arrays string


    【解决方案1】:
    var words = "#hashtagged no hashtag #antoherhashtag";
    var tagslistarr = words.match(/#\S+/g);   //["#hashtagged", "#antoherhashtag"]
    

    【讨论】:

    • 你可以在没有点的情况下逃脱,不是吗?只是 (/#\S+/g)
    • +1 这个答案比公认的答案更有效率。
    【解决方案2】:

    DEMO

    var words = "#hashtagged no hashtag #antoherhashtag";
    var tagslistarr = words.split(' ');
    var arr=[];
    $.each(tagslistarr,function(i,val){
        if(tagslistarr[i].indexOf('#') == 0){
          arr.push(tagslistarr[i]);  
        }
    });
    console.log(arr);
    

    tagslistarr = words.split(' ') 将带有空格的单词拆分为一个新数组

    $.each() 循环遍历tagslistarr 数组的每个值

    if(tagslistarr[i].indexOf('#') == 0) 检查# 是否在开头,如果此条件为true,则将其添加到arr 数组中

    【讨论】:

      【解决方案3】:
      var tmplist = words.split(' ');
      var hashlist = [];
      var nonhashlist = [];
      for(var w in tmplist){
          if(tmplist[ w ].indexOf('#') == 0)
              hashlist.push(tmplist[ w ]);
          else
              nonhashlist.push(tmplist[ w ]);
      }
      

      【讨论】:

        【解决方案4】:
        var words = "#hashtagged no hashtag #antoherhashtag";
        var tagslistarr = words.match(/(^|\s)#([^ ]*)/g);
        

        【讨论】:

          【解决方案5】:

          使用纯 JavaScript 的正则表达式非常简单:

          var str = "Lorem #ipsum dolor sit #amet";
          var hashArray = (str.match(/#(\w+)/g));
          
          console.log(hashArray);
          // => [ '#ipsum', '#amet' ]
          console.log(Array.isArray(hashArray));
          // => true
          

          https://repl.it/C8GJ

          如果你需要处理变音符号:

          var str = "Loröm #ipsöm dolor sit #amöt";
          var hashArray = (str.match(/#([A-zÀ-ÖØ-öø-ÿ]+)/g));
          
          console.log(hashArray);
          // => [ '#ipsöm', '#amöt' ]
          console.log(Array.isArray(hashArray));
          // => true
          

          https://repl.it/@ryanpcmcquen/QuickwittedParallelLemming

          【讨论】:

          • 如果使用变音符号(重音字母),它只会显示那个词 - 值得更新
          猜你喜欢
          • 1970-01-01
          • 2018-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-15
          • 1970-01-01
          • 2013-03-06
          相关资源
          最近更新 更多