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?


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


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+.


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('.',':');

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(".", ":") );

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(".", ":");

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(".", ":");

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

1
(9.61 + "").replace('.',':')

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

"9.61".replace('.',':')
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.