How to replace a string at a particular position

52,801

Solution 1

The following is one option:

var myString = "Mar 16, 2010 00:00 AM";

myString = myString.substring(0, 13) + 
           "12" + 
           myString.substring(15, myString.length);

Note that if you are going to use this to manipulate dates, it would be recommended to use some date manipulation methods instead, such as those in DateJS.

Solution 2

A regex approach

"Mar 16, 2010 00:00 AM".replace(/(.{13}).{2}/,"$112")
Mar 16, 2010 12:00 AM

Solution 3

One option would be

>>> var test = "Mar 16, 2010 00:00 AM";
>>> test.replace(test.substring(13,15),"12")

Solution 4

if it is always 00: in hours,

you can just replace 00: with 12:

using replace() ,

if not u need find the indexOf the : character ,

and then replace 2 digit before with 12.

Share:
52,801
Harish
Author by

Harish

Updated on July 05, 2022

Comments

  • Harish
    Harish almost 2 years

    Is there a way to replace a portion of a String at a given position in java script. For instance I want to replace 00 in the hours column with 12 in the below string.The substring comes at 13 to 15.

    Mar 16, 2010 00:00 AM 
    
  • Dominic Rodger
    Dominic Rodger over 14 years
    Wouldn't that give "Mar 16, 2010 12:12 AM"? You could change it to test.replace(test.substring(13,16),"12:") I think (similar to haim's method).
  • Daniel Vassallo
    Daniel Vassallo over 14 years
    @Dominic: Good point, but actually it will replace it correctly in this case, because the JavaScript replace() method only replaces the first occurrence. But if the date was "Mar 16 2000", it would not have worked.
  • Dominic Rodger
    Dominic Rodger over 14 years
    @Daniel - interesting - seems like an odd implementation of String::replace. Thanks for the correction!
  • user1510539
    user1510539 about 8 years
    I like this approach but if anyone is concerned about the performance here's a test comparison: jsperf.com/substring-replace
  • YOU
    YOU about 8 years
    right, regex are generally slower. That I won't use myself in 2016.
  • Eury Pérez Beltré
    Eury Pérez Beltré over 6 years
    Can you elaborate an example?
  • Admin
    Admin about 6 years
    Ten times slower, but still extremely fast unless you need to perform a million operations per second.
  • Admin
    Admin about 6 years
    A slightly faster and more concise approach: for the second part of the string, use myString.substr(15) - this will get the string from position 15 till the end of the string.
  • Felipe Augusto
    Felipe Augusto almost 6 years
    @EuryPérezBeltré I can think about a straight way to do that: 'Mar 16, 2010 00:00 AM'.replace('00:', '12:'), (even not using indexOf())