使用jQuery按井号拆分字符串并保存到数组中?

9

我有一个变量,其中包含一系列单词的字符串,其中一些单词带有井号,例如:

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

我想将每个带有井号的单词保存到一个数组中,类似于:
var tagslistarr = words.split(' ');

但我不确定如何获取既被#包围又被空格包围的字符。

有没有特殊的方法可以做到这一点?是否应该使用某些ASCII字符来标识它们?

5个回答

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

3
你可以不加那个点,对吧?只需要用 (/#\S+/g) 就可以了。 - omma2289
+1 这个答案比被接受的答案更高效。 - Alexander O'Mara

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


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

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


请将下面关于编程的内容从英语翻译成中文。仅返回翻译的文本:如果使用变音符号(重音字母),则只显示该单词到该点 - 值得更新 - jean d'arme

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接