2013-08-16 51 views
8

我有了一系列的話,其中有一些主題標籤,如一串一個變種:通過hashtag分割字符串並保存到jQuery數組中?

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

我想每個hashtagged單詞保存到一個數組,有點像:

var tagslistarr = words.split(' '); 

但我不確定如何獲得被#和空間包圍的角色。

有沒有特殊的方法來做到這一點?是否有一些ASCII字符可以用來識別?

回答

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(' ')分割用空格字從一個新的數組通過tagslistarr數組的每個值

$.each()

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
var words = "#hashtagged no hashtag #antoherhashtag"; 
var tagslistarr = words.match(/(^|\s)#([^ ]*)/g); 
21
var words = "#hashtagged no hashtag #antoherhashtag"; 
var tagslistarr = words.match(/#\S+/g); //["#hashtagged", "#antoherhashtag"] 
+3

你可以離開那裏沒有點,不是嗎?只是(/#\ S +/g) –

+0

@koala_dev:你說得對。更新了答案。 – boring

+0

+1這個答案比接受的答案更有效率。 –

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

+0

如果使用變音符號(重音字母),它只顯示那個單詞 - 值得更新 –

+1

@ jeand'arme,謝謝,我已經更新了答案。 – ryanpcmcquen