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
.
Author by
Harish
Updated on July 05, 2022Comments
-
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 with12
in the below string.Thesubstring
comes at 13 to 15.Mar 16, 2010 00:00 AM
-
Dominic Rodger over 14 yearsWouldn'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 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 over 14 years@Daniel - interesting - seems like an odd implementation of String::replace. Thanks for the correction!
-
user1510539 about 8 yearsI like this approach but if anyone is concerned about the performance here's a test comparison: jsperf.com/substring-replace
-
YOU about 8 yearsright, regex are generally slower. That I won't use myself in 2016.
-
Eury Pérez Beltré over 6 yearsCan you elaborate an example?
-
Admin about 6 yearsTen times slower, but still extremely fast unless you need to perform a million operations per second.
-
Admin about 6 yearsA slightly faster and more concise approach: for the second part of the string, use
myString.substr(15)
- this will get the string from position15
till the end of the string. -
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 usingindexOf()
)