2010-02-10 15 views
8

Czy istnieje sposób na zastąpienie fragmentu ciągu w danej pozycji w skrypcie java. Na przykład chcę zastąpić 00 w kolumnie godzin 12 w poniższej string.The substring przychodzi na 13 do 15.Jak zamienić napis na konkretną pozycję?

Mar 16, 2010 00:00 AM 

Odpowiedz

10

Poniżej jedna opcja:

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

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

Pamiętaj, że jeśli masz zamiar to wykorzystać do manipulowania dat, wskazane byłoby, aby zamiast korzystać z niektórych metod data manipulacji, takich jak te w DateJS.

1

Można direclty używać replace() metodę wraz z indexOf() sznurka w JavaScript.

+0

można opracować jakiś przykład? –

5

Jedną z opcji byłoby

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

Czy to nie dałoby "16 marca 2010 12:12"? Możesz go zmienić na 'test.replace (test.substring (13,16)," 12: ")' Myślę (podobnie jak metoda haima). –

+1

@Dominic: To prawda, ale faktycznie zastąpi to poprawnie w tym przypadku, ponieważ metoda replace() JavaScript zastępuje tylko pierwsze wystąpienie. Ale jeśli data jest "16 marca 2000", to by nie zadziałało. –

+0

@Daniel - interesujące - wydaje się dziwną implementacją ciągu String :: replace. Dziękuję za poprawienie mnie! –

3

jeśli jest zawsze 00: w godzinach

można po prostu zastąpić 00: z 12:

użyciu replace(),

jeśli nie u muszą znaleźć indexOf the : znak,

, a następnie zastąp 2 cyfry wcześniej znakiem 12.

4

Podejście regex

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

Podoba mi się to podejście, ale jeśli ktoś jest zaniepokojony występem tutaj jest porównanie testu: http://jsperf.com/substring-replace – user1510539

+1

prawe, regex są zwykle wolniejsze. Nie używam siebie w 2016 roku. – YOU

Powiązane problemy