2011-06-26 164 views
2

我有一個簡單的問題。使用jQuery我想將字符串中的單詞提取到arrary中。我該怎麼做呢?任何例子?jQuery從字符串中提取單詞

例如如果我有一個字符串,如下所示:我想用「@」前綴,僅保留的話

var accts = "@userA @userB @userC @userD invalidUserE @userF "; 

謝謝, K.R.

+0

你試圖做的非常短的時間這對於twitter用戶名? – Anurag

回答

5

你並不真正需要的jQuery,你可以用基本的JavaScript做到這一點很簡單:

var accts = "@userA @userB @userC @userD invalidUserE @userF "; 
var split = accts.split(" "); 
for(var i = 0; i < split.length; i++) { 
    if(split[i].charAt(0) == "@") { 
     //Got one 
    } 
} 

你可以做任何你想要的,你發現每個人做的字符串。您還應該能夠使用正則表達式。

+1

使用'split [i] .charAt(0)==「@」'將每個迭代O(1)而不是O(n)搜索任何出現的「@」的每個字符串。 –

+0

@Greg Hewgill - 謝謝,這是一個很好的觀點。我更新了這個例子。所以上面的評論仍然有意義,我最初使用'if(split [i] .indexOf(「@」)== 0)'而不是'charAt'方法。 –

1

您想使用Javascript split函數。例如:

var a = accts.split(" "); 

一旦你有在陣列的空間分離的話,迭代通過陣列來選擇的那些開始@你需要。

0

有沒有必要使用jQuery,它不會在這種情況下幫助。這樣做的最好方法是使用正則表達式來標識有效的用戶,在這種情況下,字符串以@開頭。此代碼提取字符串中以@符號開頭的所有字符串:

與以前使用@符號拆分的示例不同,它會忽略任何不以@開頭的東西,只返回有效而無需額外測試。

var accts = "@userA @userB @userC @userD invalidUserE @userF "; 
var user = null; 
var patt = /@\w+/g; 
while(user=patt.exec(accts)) 
{ 
    alert(user); 
} 
2

既然你問的jQuery

var result = $.grep(accts.split(" "), function(a){ return /^@/.test(a) }) 

爲您提供:

["@userA", "@userB", "@userC", "@userD", "@userF"] 
2

匹配= accts。比賽(/(@ \ S +)/ g)的

0

今天我有#tags同樣也需要,我用上面的答案,但我認爲他們不會給我正確的結果,當我有這樣

var accts = "[email protected] @userB @userC @userD invalidUserE @[email protected] "; 

我已經更新上面的代碼希望這將有助於人民的小提琴

演示:http://jsfiddle.net/abdulrauf6182012/3LBsC/

代碼:

的Html

<div class="output"></div> 

的Jquery:

$(document).ready(function() { 


function getHasTagAry(msgTxt, finder) {  
    var msgTxtAry = msgTxt.split(' '); 
    var hash = [] 
    for(var i = 0; i < msgTxtAry.length; i++) { 
     if(msgTxtAry[i].indexOf(finder) > -1) 
     hash.push(msgTxtAry[i].trim()) 
    } 
    msgTxtAry = hash.join('').split(finder).join('-tp-'+finder).split('-tp-'); 
    hash = []; 
    for(var i = 0; i < msgTxtAry.length; i++) { 
     if(msgTxtAry[i].trim() != ''){ 
     hash.push(msgTxtAry[i].trim())   
     } 

    } 
    return hash; 
}  

    var msgTxt = 'hellow #ABDULRAUF #RUFI #HASHTAG #HASHTAGFINDER abC#GAME'; 
    var hash2 = getHasTagAry(msgTxt,'#');  

    $('.output').append('hash tags in string='+hash2.length+'<br/>'); 
    $('.output').append(hash2.join('<br/>')); 

    $('.output').append('<br/><br/><br/>'); 


    var msgTxt = 'Hi @ABDULRAUF @RUFI @username abc @AA'; 
    var userNames = getHasTagAry(msgTxt ,'@');  
$('.output').append(userNames.length+'user names in str('+msgTxt+')<br/><br/>'); 
$('.output').append(userNames.join('<br/>')); 



}); 

如果任何一個可以優化代碼,這將是巨大的:),我有它

相關問題