我有一個簡單的問題。使用jQuery我想將字符串中的單詞提取到arrary中。我該怎麼做呢?任何例子?jQuery從字符串中提取單詞
例如如果我有一個字符串,如下所示:我想用「@」前綴,僅保留的話
var accts = "@userA @userB @userC @userD invalidUserE @userF ";
謝謝, K.R.
我有一個簡單的問題。使用jQuery我想將字符串中的單詞提取到arrary中。我該怎麼做呢?任何例子?jQuery從字符串中提取單詞
例如如果我有一個字符串,如下所示:我想用「@」前綴,僅保留的話
var accts = "@userA @userB @userC @userD invalidUserE @userF ";
謝謝, K.R.
你並不真正需要的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
}
}
你可以做任何你想要的,你發現每個人做的字符串。您還應該能夠使用正則表達式。
使用'split [i] .charAt(0)==「@」'將每個迭代O(1)而不是O(n)搜索任何出現的「@」的每個字符串。 –
@Greg Hewgill - 謝謝,這是一個很好的觀點。我更新了這個例子。所以上面的評論仍然有意義,我最初使用'if(split [i] .indexOf(「@」)== 0)'而不是'charAt'方法。 –
有沒有必要使用jQuery,它不會在這種情況下幫助。這樣做的最好方法是使用正則表達式來標識有效的用戶,在這種情況下,字符串以@
開頭。此代碼提取字符串中以@符號開頭的所有字符串:
與以前使用@
符號拆分的示例不同,它會忽略任何不以@
開頭的東西,只返回有效而無需額外測試。
var accts = "@userA @userB @userC @userD invalidUserE @userF ";
var user = null;
var patt = /@\w+/g;
while(user=patt.exec(accts))
{
alert(user);
}
既然你問的jQuery
var result = $.grep(accts.split(" "), function(a){ return /^@/.test(a) })
爲您提供:
["@userA", "@userB", "@userC", "@userD", "@userF"]
匹配= accts。比賽(/(@ \ S +)/ g)的
今天我有#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/>'));
});
如果任何一個可以優化代碼,這將是巨大的:),我有它
你試圖做的非常短的時間這對於twitter用戶名? – Anurag