2012-04-06 31 views
0

我有一個字符串,我試圖findout什麼是由 一種更好的方式替代(在boundry空間,以及如果它們存在)如果它們存在

同時更換價值不 做替換字符串值,並將boundry空間多次通過(即呼叫,trim_multispacetrimed_result)。

var replaceVal = "c"; 
var strVals = "a b c d e f g h"; 

var replacedVal = strVals.replace(new RegExp("\\b"+replaceVal+"\\b",""),""); 

alert(replacedVal) 

var trim_multispace = replacedVal.replace(/ +(?=)/g,''); 
var trimed_result = trim_multispace.replace(/^\s+|\s+$/g, ''); 

alert(trimed_result) 

回答

2

我不知道如果我沒有得到你,但這個表達式中指定

strVals.replace(new RegExp(replaceVal, 'g'), '') 
     .replace(/ +/g, ' ').replace(/^\s+|\s+$/g, ''); 
+0

謝謝!納倫德拉,你爲什麼編輯你的答案原來工作得很好? – david 2012-04-06 20:07:38

+0

@david我給'RegExp'構造函數添加了一個'g'標誌來替代'replaceVal'。也就是說,如果在字符串中的任意位置找到'replaceVal'多次,所有事件都將被替換。我認爲這將適合你的情況。 – 2012-04-06 20:12:33

+0

只是爲了讓你知道新追加的全局標誌導致你的解決方案失敗,因爲它會替換任何'replaceVal'的事件,就像'abcdefg hc''c'將被從'hc'中刪除 – david 2012-04-06 20:50:29

1

的方式下做到這一點幾乎一步工作,首先更換價值和周圍的任何空白用一個空格,然後修剪結果:

var replacedVal = strVals.replace(new RegExp("\\s*"+replaceVal+"\\s*", ""), " ").trim(); 
+1

這不會將字符串中任何位置的多個空格縮減到一個空格中。另一件事'修剪'功能只能從Javascript 1.8.1。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim – 2012-04-06 19:53:50

+0

根據問題,這不是一個要求。 OP只提到正在被替換的值周圍的邊界空間,儘管原始代碼也會有刪除所有多個空格的副作用。 – 2012-04-06 19:57:09

+0

感謝F.J trim()將對未來有用+1 – david 2012-04-06 20:03:00

相關問題