2012-05-28 25 views
5

是否有可能在特定位置的字符串替換字符更換字符在同一個JavaScript字符串中的特定指數,jQuery的

讓我們說有說的字符串:"I am a man"

我想用字符串"wom"替換7處的字符(不管原始字符是什麼)。

最終的結果應該是:"I am a woman"

+1

參見這裏http://stackoverflow.com/questions/1431094/how-do-i-replace-a-character-at-a-particular-index-in-javascript(你可以使用函數所選答案的字符串也適用於字符串)。 – Ixx

+0

@lxx不,這個函數不好,因爲它替換了源字符串中提供的許多字符 - 這裏的OP只需要替換_one_字符。 – Alnitak

+0

Alnitak是正確的。 –

回答

17

字符串是在Javascript 不變 - 你不能「到位」進行修改。

你需要切原串起來,並返回做出來的所有的作品的一個新的字符串:

// replace the 'n'th character of 's' with 't' 
function replaceAt(s, n, t) { 
    return s.substring(0, n) + t + s.substring(n + 1); 
} 

注:我沒有將它添加到String.prototype,因爲在某些瀏覽器性能如果您將函數添加到內置類型的prototype中,則會非常糟糕。

+0

他們真的是不變的,但這並不意味着你必須做指數數學。已經有一種替換方法。看到我的回覆。 – Slavo

+0

@Slavo'.replace'不支持基於位置的索引,除非你構造了一個不必要的複雜正則表達式。 – Alnitak

+0

我同意。問題中給出的示例不需要複雜的RegEx。我想這一切都取決於真實的用例。 – Slavo

1

或者你可以這樣做,使用數組函數。

var a='I am a man'.split(''); 
a.splice.apply(a,[7,1].concat('wom'.split(''))); 
console.log(a.join(''));//<-- I am a woman 
相關問題