jQuery从字符串中提取单词

时间:2011-06-26 22:11:24

标签: jquery string

我有一个简单的问题。使用jQuery我想将字符串中的单词提取到arrary中。我该怎么做呢?有什么例子吗?

e.g。如果我有一个如下所示的字符串:我想只得到带有'@'前缀的单词

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

谢谢, K.R。

6 个答案:

答案 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)

您想使用Javascript split功能。例如:

var a = accts.split(" ");

在数组中有空格分隔的单词后,遍历数组以根据需要选择以@开头的单词。

答案 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/>') );



});

如果任何人可以优化代码那就太棒了:),我的时间非常短