2013-02-17 58 views
1

這裏更換空間是我的函數:內容替換功能:用下劃線

function process() { 
var content = document.getElementById('content').value; 
content = content.replace(/(<tt>(.*?)<tt>)/g, '$2'); 
document.getElementById('content').value = content; 
} 

這裏是我的HTML:

<textarea id="content" cols="48" rows="8"></textarea><br /> 
<input type="button" value="Process" onclick="process()" /> 

示例代碼:

<tt>hello<tt> 

的目的我的問題是要找出我是否可以用「下劃線」替換「空格」 例如,目前如果你是從上面把我的示例代碼,並通過我的功能,運行它,你會忽略這下面的代碼:

hello 

,如果你運行該代碼:

<tt>hel lo<tt> 

通過功能,這將是你的結果:

hel lo 

的結果,我寧願將是:

hel_lo 

用下劃線替換空格。我不知道我可以插入這樣的事情:

content = content.replace(/()/g, '_'); 

進入我的功能,但是,如果是這樣做,然後運行下面這段代碼:

<tt>d j<tt>1 2 

那麼結果將是

d_j1_2 

而不是我更喜歡這將是

d_j1 2 

總之,我想帶下劃線,但只有我

<tt><tt> 

標籤之間的替換空間。非常感謝您的幫助,並非常感謝您提前。我會提供,以及此鏈接到我的例子:

content = content.replace(/(<tt>(.*?)<tt>)/g, function(m,p1,p2) { 
      return p2.replace(/ /g,"_"); 
      }); 

.replace() method接受第二個參數,這樣就可以做加工定製回調:jsfiddle example

+0

你的意思'',像普通的HTML標籤?如果我有' bl ah he llo '''你期望發生什麼? – Xymostech 2013-02-17 03:06:40

+0

爲了簡單起見,我使用了這個例子。但是,我會使用''而不是'',但在這個示例中它並不重要 – Clint 2013-02-17 03:20:09

+0

好的,只要確保您瞭解其中的差異即可。很高興你能做到。 – Xymostech 2013-02-17 03:20:55

回答

1

來考慮如下的第一種方式在比賽(es)上。回調接收匹配和子匹配作爲參數,並且無論您的回調將返回將用作替換文本,因此您可以替換第二個子匹配上的空格。

演示:http://jsfiddle.net/WVUYX/42/

+0

感謝您提供方便且信息豐富的回覆。你的回答工作得很好。 – Clint 2013-02-17 03:12:36