2012-06-07 47 views
-1

首先,我是javascript noob,幾乎不知道任何正則表達式。我試圖破解在一起的東西,將從根本上改變這一點:Javascript如何用一些要替換的文本替換字符串的一部分

<span class="fspoiler">spoils</span> 

要這樣:

<spoiler>spoils</spoiler> 

從一些研究,它似乎是使用正則表達式和replace()功能是要走的路,但我不知從哪裏開始。

+0

標記名是類名減去'f',對嗎? –

+0

@karank正確。 – InsanityOnABun

回答

4
var str = '<span class="fspoiler">spoils</span>'; 
str.replace(/<span class="f(.+)">(.+)<\/span>/, '<$1>$2</$1>'); 
+0

在正則表達式的末尾添加一個'g'可以使它在一個字符串中的所有實例上工作,對嗎? – InsanityOnABun

+0

@InsanityOnABun是的,沒錯。 – xdazz

+0

優秀。這正是我所期待的。謝謝! – InsanityOnABun

-1

通過使用jQuery replceWith功能

$('span.fspoiler').replaceWith('<spoiler>spoils</spoiler>'); 
-1
var className=document.getElementById("abc"); 
var tagName=className.replace("f",""); 
var content=document.getElementById("abc").innerHTML; 
var newTag = "<"+tagName+">"+content+"<"+tagName"/>"; 

這裏,假設<span>給出的id="abc"

0

也陷入了一些問題時,擾流板都在相同的遭遇多次線。由於我是正則表達式的noob,我不知道從哪裏開始修復它。我最終只寫出了一段時間會做我所需要的。

var spoilerStart = '<span class="fspoiler">'; 
var spoilerEnd = '</span>'; 
while (body.indexOf(spoilerStart) != -1) 
{ 
    var startIndex = body.indexOf(spoilerStart); 
    var endIndex = body.indexOf(spoilerEnd, startIndex) + spoilerEnd.length; 
    var fullSpoiler = body.substring(startIndex, endIndex); 

    var textStartIndex = startIndex + spoilerStart.length; 
    var textEndIndex = endIndex - spoilerEnd.length; 
    var text = body.substring(textStartIndex, textEndIndex); 

    body = body.replace(fullSpoiler, '<spoiler>' + text + '</spoiler>'); 
} 
相關問題