2016-03-14 82 views
-4

在一個字符串內部:我需要用另一個數字替換[ ]之間的數字,用Javascript或jQuery。需要用Javascript或jQuery替換[...]之間的數字

什麼是繼續進行的最佳方式?

Eamples

"[12345].Checked" > "[1].Checked" 
"[123].RequestID" > "[21].RequestID" 

感謝您的幫助。

+1

您是否嘗試過什麼角色?你可以用正則表達式試試'.replace'? – putvande

+0

你也可以使用indexOf,但用正則表達式替換將是更好的解決方案。 – Blady214

+0

是的,但我是一個線索與正則表達式 – Bronzato

回答

1
function fixNum(str, newnum) { 
    return str.replace(/\[\d+\]/,'[' + newnum + ']') 
} 
0

使用.replace

"[12345].Checked".replace(/\[(\d+)\]/, "[1]") // "[1].Checked"

0

使用正則表達式:

/\[(\d+)\]/ 

它搜索一[]組內的號碼(不管長度)。

結合替換你可以做到。

測試:

https://regex101.com/r/zT5kD0/1

+0

您的示例不會給出正確的結果 –

+0

@ freedomn-m你是認真的嗎?這是正確的正則表達式。事實上,其他答案具有相同的正則表達式。 –

+0

我沒有說正則表達式是錯誤的 - 我說你的示例是錯誤的 - 鏈接 - 你甚至懶得去試試嗎?使用你的示例,通過測試'[12345] .Checked'和*替換* 1(按照每個問題) - 你得到了什麼? *不*'[1]。檢查'。 –

0

使用replace方法來替代

function replaceStr(string,orgText,replaceText){ 
     var res = string.replace(orgText, replaceText); 
     return res; 
    } 

console.log(replaceStr("[12345].Checked",'12345','1')); 

jsfiddle

+2

爲什麼在''[12345] .Checked「.replace('12345','1')時引入一個函數;'會更短,而且已經足夠好了解? – putvande

+0

使它更通用化.Beside「[12345] .Checked」還有一個字符串需要替換「[123] .RequestID」>「[21] .RequestID」 – brk

+1

是的,但'replaceStr(「[12345] .checked 「,'12345','1')'佔用更多的字符,而不僅僅是」[12345] .Checked「.replace('12345','1');'你引入一個已經有函數的函數。 – putvande