2012-05-28 13 views
5

E 'possibile sostituire il personaggio in una determinata posizione, con una stringaSostituzione di carattere in un particolare indice con una stringa in Javascript, Jquery

Diciamo v'è dire una stringa: "I am a man"

I desidera sostituire il carattere in 7 con la stringa "wom" (indipendentemente dal carattere originale).

Il risultato finale dovrebbe essere: "I am a woman"

+1

vedi anche qui http://stackoverflow.com/questions/1431094/how-do-i-replace-a-character-at-a-particular-index-in-javascript (è possibile utilizzare la funzione di della risposta selezionata, funziona anche per le stringhe). – Ixx

+0

@lxx no, quella funzione non è valida in quanto sostituisce tanti caratteri nella stringa di origine come sono stati forniti - l'OP qui vuole solo _one_ carattere sostituito. – Alnitak

+0

Alnitak è corretto. –

risposta

17

Le stringhe sono immutabili in Javascript - non è possibile modificare "al suo posto".

Avrai bisogno di tagliare la stringa originale, e restituire una nuova stringa fatto di tutti i pezzi:

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

NB: non ho aggiunto questo per String.prototype perché in alcune prestazioni browser è molto brutto se aggiungi funzioni allo prototype di tipi predefiniti.

+0

Sono davvero immutabili, ma questo non significa che devi fare i conti con la matematica. Esiste già un metodo di sostituzione. Vedi la mia risposta. – Slavo

+0

@Slavo '.replace' non supporta gli indici basati sulla posizione, a meno che non si costruisca una regexp inutilmente complicata. – Alnitak

+0

Sono d'accordo. Gli esempi forniti nella domanda non richiedono una RegEx complessa. Immagino che tutto dipenda dal caso d'uso reale. – Slavo

1

Oppure si potrebbe fare in questo modo, utilizzando le funzioni di matrice.

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