Javascript 如何在特定位置替换字符串

Javascript 如何在特定位置替换字符串,javascript,string,replace,substring,Javascript,String,Replace,Substring,是否有一种方法可以替换java脚本中给定位置的字符串的一部分。例如,我想在下面的字符串中将小时列中的00替换为12。子字符串在13到15之间 Mar 16, 2010 00:00 AM 您可以在Javascript中直接使用方法和字符串的名称。以下是一个选项: var myString = "Mar 16, 2010 00:00 AM"; myString = myString.substring(0, 13) + "12" + myStri

是否有一种方法可以替换java脚本中给定位置的字符串的一部分。例如,我想在下面的字符串中将小时列中的
00
替换为
12
。子字符串在13到15之间

Mar 16, 2010 00:00 AM 

您可以在Javascript中直接使用方法和字符串的名称。

以下是一个选项:

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

myString = myString.substring(0, 13) + 
           "12" + 
           myString.substring(15, myString.length);
请注意,如果要使用此方法来操作日期,建议使用一些日期操作方法,例如。

中的方法,其中一个选项是

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

如果总是
00:
小时

您只需将
00:
替换为
12:

使用
replace()

如果不需要,您需要找到
索引
字符

然后将前面的2位数字替换为正则表达式方法

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

另一个创意是将其转换为数组,
拼接
,并将其转换回字符串

let str = "Mar 16, 2010 00:00 AM";
let arr = str.split("");
arr.splice(13,2,"1","2");
str = arr.join("");

这不就是“2010年3月16日上午12:12”吗?您可以将其更改为
test.replace(test.substring(13,16),“12:”)
我认为(类似于haim的方法)。@Dominic:这一点很好,但实际上在这种情况下它会正确地替换它,因为JavaScript replace()方法只替换第一次出现的内容。但是,如果日期是“2000年3月16日”,它就不起作用了。@Daniel-很有趣-似乎是String::replace的一个奇怪的实现。谢谢你的更正!我喜欢这种方法,但如果有人关心性能,这里有一个测试比较:对,regex通常较慢。我不会在2016年使用我自己。速度要慢十倍,但仍然非常快,除非你需要每秒执行一百万次操作。你能详细说明一个例子吗?@EuryPérezBeltré我可以想出一个简单的方法:
'2010年3月16日00:00 AM'。替换('00:','12:')
,(即使不使用
indexOf()
)一种更快更简洁的方法:对于字符串的第二部分,使用
myString.substr(15)
-这将从位置
15
获取字符串,直到字符串结束。