2010-02-10 14 views
8

¿Hay alguna manera de reemplazar una parte de una cadena en una posición dada en una secuencia de comandos java? Por ejemplo quiero reemplazar 00 en la columna de la hora con 12 en el siguiente string.The substring llega en 13 a 15.Cómo reemplazar una cadena en una posición particular

Mar 16, 2010 00:00 AM 

Respuesta

10

La siguiente es una opción:

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

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

Tenga en cuenta que si se va a usar esto para manipular fechas, sería recomendable utilizar algunos métodos de manipulación de la fecha en cambio, como las de DateJS.

1

Puede utilizar direclty de replace() método junto con indexOf() de cadena en Javascript.

+0

¿Puede usted explicar un ejemplo? –

5

Una opción sería

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

¿No daría eso "Mar 16, 2010 12:12 AM"? Podrías cambiarlo a 'test.replace (test.substring (13,16)," 12: ")' Creo (similar al método de haim). –

+1

@Dominic: Buen punto, pero en realidad lo reemplazará correctamente en este caso, porque el método JavaScript replace() solo reemplaza la primera ocurrencia. Pero si la fecha era "Mar 16 2000", no habría funcionado. –

+0

@Daniel - interesante - parece una extraña implementación de String :: replace. ¡Gracias por la corrección! –

3

si es siempre 00: en horas,

que sólo puede sustituir 00: con 12:

usando replace(),

si no es u necesidad de encontrar el indexOf el : caracteres,

y luego reemplace 2 dígitos antes con 12.

4

Un enfoque de expresiones regulares

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

Me gusta este enfoque, pero si alguien está preocupado por el rendimiento aquí hay una comparación de prueba: http://jsperf.com/substring-replace – user1510539

+1

a la derecha, las expresiones regulares generalmente son más lentas. Que no me usaré en 2016 – YOU

Cuestiones relacionadas