9

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

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

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

var tagslistarr = words.split(' ');

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

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

4

5 回答 5

23
var words = "#hashtagged no hashtag #antoherhashtag";
var tagslistarr = words.match(/#\S+/g);   //["#hashtagged", "#antoherhashtag"]
于 2013-08-16T07:52:55.877 回答
13

演示

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数组中

于 2013-08-16T07:46:53.590 回答
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 ]);
}
于 2013-08-16T07:47:17.350 回答
1
var words = "#hashtagged no hashtag #antoherhashtag";
var tagslistarr = words.match(/(^|\s)#([^ ]*)/g);
于 2013-08-16T07:51:35.763 回答
1

使用纯 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

于 2016-06-27T23:09:41.093 回答