2012-08-07 595 views
1

我需要帮助识别纯文本句子中的twitter句柄(我认为它被称为句柄..),并在句柄周围包裹一个span标签。在纯文本句子中识别twitter句柄

所以,如果我有这样构成的句​​子:

I can't wait to watch the 2012 London Olympic Games! @london2012 

我需要找到手感和环绕它的跨度标签:

I can't wait to watch the 2012 London Olympic Games! <span>@london2012</span> 

这是我尝试使用:

function findHandle(text) { 
    var handle = text.substr(text.indexOf("@"), text.indexOf(" ")); 
    return text.replace(handle, "<span>" + handle + "</span>"); 
} 

我的代码没有按计划工作。最好的办法是什么?

+0

如果手柄后没有空间会怎么样? – 2012-08-07 19:48:02

+0

这是我碰到的问题之一。 – 2012-08-07 19:53:58

回答

6

假设你的文字内容是在div元素,下面似乎工作(虽然不是彻底测试):

$('div').html(
    function(i,html) { 
     return html.replace(/@[\d\D]+\b/g, '<span>$&</span>'); 
    });​ 

JS Fiddle demo

上面似乎little fragile,所以我改变了正则表达式选择器:

$('div').html(
    function(i,html) { 
     return html.replace(/(@\w+)/g, '<span>$&</span>'); 
    });​ 

JS Fiddle demo

参考文献:

+0

完美的作品!正是我需要的。谢谢! – 2012-08-07 19:59:36

+0

非常欢迎,我很乐意帮助! =)(另外,添加一个链接来显示*为什么*第一个发布的代码'看起来有点脆弱'。) – 2012-08-07 20:01:35