2012-08-07 25 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