2014-02-06 78 views
1

是否有可能使用jQuery(或其他任何東西)從元素中刪除某些文本的某些部分,但將其餘部分保持原樣?jQuery,刪除某些文本塊

我使用了一個Wordpress插件,它將我所有的推文編譯成WP帖子,但帖子標題會自動使用推文的全文正文進行保存。例如;

@username http://t.co/XXXXXXXX #hashtag

我希望能夠刪除超鏈接,也是#hashtag

包括hashtag將永遠是相同的(即,它總是會#hashtag),但超鏈接將與每一個變化帖子。有沒有辦法可以做到這一點?

+0

你可以發佈創建此輸出的插件的位? – kmoe

+1

從父文本中刪除文本的最安全的方法是正則表達式。爲它的preg_replace()。 –

+0

@VolkanUlukut使用正則表達式是_unsafest_方式。 – undefined

回答

0

取決於用戶名,鏈接和標籤是否總是處於tweet的相同位置,事情可能更難或更容易。但我可能會建議分割「'上的推文字符串並循環構建一個字符串,而不要以'@','http://t.co'和'#'開頭。

完整的示例會更容易,因爲您可能不想刪除所有句柄,用戶名和主題標籤。但我懷疑你可能想利用的格式有一些統一性。

例子:

var words = $(el).text().split(' '); 
    var cleaned = []; 
    for (var i = 0, len = words.length; i < len; i++) { 
     if (!(words[i].indexOf('@') === 1)) { // ... etc for other characters 
      cleaned.push(words[i]); 
     } 
    } 
    var cleaned_string = cleaned.join(' '); 
+0

它們總是以相同的順序。用戶名,鏈接,標籤 – Poisontonomes

0

Jquery Link:

var test = "@username http://t.co/XXXXXXXX #hashtag"; 
var matchindex = test.indexOf("#"); 
alert(matchindex); // Tells you at what index the hashtag starts 
var res = test.split("#"); 
alert(res[0]); // Gives you rest of the string without hastag 

你可以做這樣的事情,得到的字符串不hashtag.You'll必須得到整個文本字符串轉換爲可變第一。

0

可以使用正則表達式來刪除URL和hastags,例如: 要刪除HTTP部分:

fullTweet.replace(/http:\/\/.+?\s/g, ""); 

正則表達式表示http://後跟任意數量的字符,直到空間(使用非心切,即+ ?,這意味着它將在第一空間停止)

要刪除的主題標籤

fullTweet.replace(/#.+?(\s|$)/g, ""); 

這是一個#,然後按任何字符,直到字符串

Here's a complete example.

Good reference for javascript regular expressions的空間或結束。