8

Is it possible to replace the a character at a particular position with a string

Let us say there is say a string : "I am a man"

I want to replace character at 7 with the string "wom" (regardless of what the original character was).

The final result should be : "I am a woman"

3
  • 1
    See also here stackoverflow.com/questions/1431094/… (you can use the function of the selected answer, works as well for strings). Commented May 28, 2012 at 12:30
  • @lxx no, that function is no good as it replaces as many characters in the source string as were supplied - the OP here only wants one character replaced. Commented May 28, 2012 at 12:45
  • Does this answer your question? How do I replace a character at a particular index in JavaScript? Commented Dec 31, 2019 at 4:34

3 Answers 3

22

Strings are immutable in Javascript - you can't modify them "in place".

You'll need to cut the original string up, and return a new string made out of all of the pieces:

// 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: I didn't add this to String.prototype because on some browsers performance is very bad if you add functions to the prototype of built-in types.

Sign up to request clarification or add additional context in comments.

8 Comments

They really are immutable, but that doesn't mean you have to do index math. There is already a replace method. See my reply.
@Slavo .replace doesn't support position based indices, unless you construct a needlessly complicated regexp.
I agree. The examples given in the question don't need complex RegEx. I guess it all depends on the real use case.
@Slavo the OP's use case is replacing a character by index - .replace() replaces by content. i.e. he wants to replace at the 7th position regardless of what character is already there.
I understand. What I'm saying is that his first example can be done by str.replace("man", "woman");
|
1

Or you could do it this way, using array functions.

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

Comments

-1

There is a string.replace() method in Javascript: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace

P.S.
By the way, in your first example, the index of the "m" you are talking about is 7. Javascript uses 0-based indices.

1 Comment

This doesn't satisfy the OP's problem. They want to access by index and string.replace() replaces with a regular expression. This is completely different.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.