Сегодня у меня такая же потребность в #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/>') );
});
Если кто-то может оптимизировать код, это было бы здорово :), у меня очень мало времени для этого