我有一个简单的问题。使用jQuery我想将字符串中的单词提取到arrary中。我该怎么做呢?有什么例子吗?
e.g。如果我有一个如下所示的字符串:我想只得到带有'@'前缀的单词
var accts = "@userA @userB @userC @userD invalidUserE @userF ";
谢谢, K.R。
答案 0 :(得分: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 :(得分:2)
因为你要求jquery
var result = $.grep(accts.split(" "), function(a){ return /^@/.test(a) } )
给你:
["@userA", "@userB", "@userC", "@userD", "@userF"]
答案 2 :(得分:2)
matches = accts.match(/(@ \ S +)/ g)
答案 3 :(得分:1)
答案 4 :(得分:0)
没有必要使用jQuery,在这种情况下它无济于事。执行此操作的最佳方法是使用正则表达式来标识有效用户,在本例中为以@
字符开头的字符串。此代码从字符串中提取以@符号开头的所有字符串:
与之前在@
符号上使用split的示例不同,它会忽略任何不以@
开头的内容,只返回有效内容而无需额外测试。
var accts = "@userA @userB @userC @userD invalidUserE @userF ";
var user = null;
var patt = /@\w+/g;
while(user=patt.exec(accts))
{
alert(user);
}
答案 5 :(得分:0)
今天我对#tags也有同样的需求,我使用上面的答案,但我认为当我有这样的字符串时他们没有给我正确的结果
var accts = "a@userA @userB @userC @userD invalidUserE @userF@userG ";
我已经更新了上面的代码,希望它能帮助人们
小提琴演示: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/>') );
});
如果任何人可以优化代码那就太棒了:),我的时间非常短