Jak mogę zamienić ciąg znaków w JavaScript, aby przekonwertować „9.61” na „9:61”?

275

Biorąc pod uwagę linię kodu

var value = $("#text").val();

i value = 9.61muszę przekonwertować 9.61na 9:61. Jak mogę tutaj użyć funkcji zamiany JavaScript?

Nisanth Kumar
źródło
29
Zauważ, że nie ma to nic wspólnego z jQuery, ale tylko ze zwykłym starym javascript.
Ikke
1
Mam podobny problem. Mam zmienną „var” w javascript i chcę w niej zastąpić ciąg / znaki. Próbowałem tego kodu: var myObject = "my% dynamic% value \ n"; myObject = myObject.replace ("%", ""). replace ("\ n", ""); Próbowałem także myObject = myObject.replace ('%', ''). Replace ('\ n', ''); Daje mi błąd polegający na tym, że zamiana nie jest znaną funkcją
Balaji Birajdar
Dokładny komunikat o błędzie dotyczący powyższego problemu to „Błąd środowiska wykonawczego Microsoft JScript: Obiekt nie obsługuje właściwości ani metody„ zamień ””
Balaji Birajdar

Odpowiedzi:

539

Zrób to tak:

var value = $("#text").val(); // value = 9.61 use $("#text").text() if you are not on select box...
value = value.replace(".", ":"); // value = 9:61
// can then use it as
$("#anothertext").val(value);

Zaktualizowano w celu odzwierciedlenia aktualnej wersji jQuery. Jest też wiele odpowiedzi, które najlepiej pasowałyby do tej samej sytuacji. Jako programista musisz wiedzieć, który jest który.

Zamień wszystkie wystąpienia

Aby wymienić kilka znaków na raz korzystać z niektórych rzeczy tak: name.replace(/&/g, "-"). Tutaj zastępuję wszystkie &znaki -. goznacza „globalny”

Uwaga - może być konieczne dodanie nawiasów kwadratowych, aby uniknąć błędu -title.replace(/[+]/g, " ")

kredyty vissu i Dante Cullari

Reigel
źródło
6
Próbowałem tego, ale wystąpił błąd jako wartość. Miejsce nie jest funkcją :(
Nisanth Kumar
program phphddeveloper dodał coś, aby poprawić ... powinien to zrobić ... patrz wyżej edytowany
Reigel
7
To nie zadziała, jeśli spróbujemy zastąpić więcej niż jedną wartość na raz. :(
vissu
56
Aby wymienić kilka znaków na raz korzystać z niektórych rzeczy tak: name.replace(/&/g, "-"). Tutaj zastępuję wszystkie znaki „&” znakami „-”. „g” oznacza „globalny”.
vissu
9
Uwaga - może być konieczne dodanie nawiasów kwadratowych, aby uniknąć błędu -title.replace(/[+]/g, " ")
Dante Cullari
67

Prawdopodobnie najbardziej eleganckim sposobem na zrobienie tego jest zrobienie tego w jednym kroku. Zobaczyć val().

$("#text").val(function(i, val) {
  return val.replace('.', ':');
});

w porównaniu do:

var val = $("#text").val();
$("#text").val(val.replace('.', ':'));

Z dokumentów:

.val( function(index, value) )

funkcja (indeks, wartość) Funkcja zwracająca wartość do ustawienia.

Ta metoda jest zwykle używana do ustawiania wartości pól formularza. W przypadku <select multiple="multiple"> elementów można wybrać wiele s, przekazując tablicę.

.val()Metoda pozwala nam ustawić wartość przekazując w funkcji. Od jQuery 1.4 do funkcji przekazywane są dwa argumenty, indeks bieżącego elementu i jego bieżąca wartość:

$('input:text.items').val(function(index, value) {
  return value + ' ' + this.className;
});

Ten przykład dołącza ciąg „items” do wartości wprowadzania tekstu.

Wymaga to jQuery 1.4+.

Cletus
źródło
ale widzę, że facet chce tylko zmienić, var valuea nie wartość w polu tekstowym, jak sugerowałeś ...
Reigel
41

Uwielbiam łańcuchowe metody jQuery . Po prostu zrób ...

    var value = $("#text").val().replace('.',':');

    //Or if you want to return the value:
    return $("#text").val().replace('.',':');
Shadrack B. Orina
źródło
17
nie ma to nic wspólnego z łańcuchem jquery. Po wywołaniu .val()jest to zwykły ciąg znaków.
zerkms
19

Prosta jedna wkładka:

$("#text").val( $("#text").val().replace(".", ":") );
VIDesignz
źródło
1
zadziała to tylko wtedy, gdy wartość jest łańcuchem ... a także $("#text")dwukrotne wywołanie nie jest dobrą praktyką ...
Reigel
OP również nie określił, że chce zastąpić wartość $("#text"):)
Reigel 14.12
Komentarz 1 ... Źle. Komentarz 2 ... zastanów się nad logiką jego pytania, nie trzeba go określać.
VIDesignz,
udowodnij to ... i pamiętaj, datowaneJan 27 '10 at 10:16
Reigel
nawet nie znasz dobrych praktyk .. możesz przeczytać to .. stackoverflow.com/questions/3230727/…
Reigel
6

Można to zrobić za pomocą zwykłej funkcji JavaScript replace().

value.replace(".", ":");
Anders
źródło
3
Nie jestem pewien, czy coś przeoczyłem, ale ponieważ wartość pochodzi z pola tekstowego, jest to ciąg nie? Przykład jsfiddle.net/xMBuA
Anders
4

Możesz użyć funkcji JavaScript, takich jak zamień, i możesz owinąć kod jQuery w nawiasy kwadratowe:

var value = ($("#text").val()).replace(".", ":");
kravits88
źródło
3
$("#text").val(function(i,v) { 
   return v.replace(".", ":"); 
});
andlrc
źródło
1
(9.61 + "").replace('.',':')

Lub jeśli twój 9.61jest już ciągiem:

"9.61".replace('.',':')
TY
źródło