通过hashtag拆分字符串并使用jQuery保存到数组中?

时间:2013-08-16 07:41:34

标签: javascript jquery arrays string

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

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

我想将每个hashtagged word保存到一个数组中,有点像:

var tagslistarr = words.split(' ');

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

有没有一种特殊的方法呢?是否有一些我想用来识别这个字符的ASCII字符?

5 个答案:

答案 0 :(得分:22)

var words = "#hashtagged no hashtag #antoherhashtag";
var tagslistarr = words.match(/#\S+/g);   //["#hashtagged", "#antoherhashtag"]

答案 1 :(得分:13)

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,则会将其添加到{{1}}数组

答案 2 :(得分:2)

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

答案 3 :(得分:1)

var words = "#hashtagged no hashtag #antoherhashtag";
var tagslistarr = words.match(/(^|\s)#([^ ]*)/g);

答案 4 :(得分:1)

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

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/C8GJ

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

Array
(
    [0] => "update siteconfig set siteadi=:siteadial,slogan=:sitebaslik,description=:acikla,hakkinda=:hakkindalani,copright=:telif,logo=:favicon"
    [1] => "siteadial"=>"Acilsağlık.Net","sitebaslik"=>"Sağlık Hesaplama Araçlarıaa","acikla"=>"","hakkindalani"=>"","telif"=>"Tüm hakları saklıdır ","favicon"=>""
)

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