Làm cách nào để thay thế chuỗi trong JavaScript để chuyển đổi '9.61' thành '9:61'?


275

Cho dòng mã

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

value = 9.61, tôi cần chuyển đổi 9.61sang 9:61. Làm cách nào để sử dụng chức năng thay thế JavaScript ở đây?


29
Lưu ý rằng điều này không liên quan gì đến jQuery, nhưng chỉ với javascript cũ.
Ikke

1
Tôi có một vấn đề tương tự. Tôi có một biến 'var' trong javascript và tôi muốn thay thế chuỗi / ký tự trong đó. Tôi đã thử mã này: var myObject = "my% động% value \ n"; myObject = myObject.replace ("%", ""). thay thế ("\ n", ""); Cũng đã thử myObject = myObject.replace ('%', ''). Thay thế ('\ n', ''); Nó cho tôi lỗi thay thế không phải là một chức năng đã biết
Balaji Birajdar

Thông báo lỗi chính xác cho vấn đề trên là "Lỗi thời gian chạy Microsoft JScript: Đối tượng không hỗ trợ thuộc tính hoặc phương thức 'thay thế" "
Balaji Birajdar

Câu trả lời:


539

Làm như thế này:

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);

Đã cập nhật để phản ánh lên phiên bản hiện tại của jQuery. Và cũng có rất nhiều câu trả lời ở đây sẽ phù hợp nhất với mọi tình huống tương tự như thế này. Bạn, là một nhà phát triển, cần phải biết đó là cái gì.

Thay thế tất cả các lần xuất hiện

Để thay thế nhiều ký tự cùng một lúc, hãy sử dụng một số thứ như thế này : name.replace(/&/g, "-"). Ở đây tôi đang thay thế tất cả các &ký tự bằng -. gcó nghĩa là "toàn cầu"

Lưu ý - bạn có thể cần thêm dấu ngoặc vuông để tránh lỗi -title.replace(/[+]/g, " ")

tín dụng vissu và Dante Cullari


6
Tôi đã thử điều đó nhưng một lỗi xảy ra là value.replace không phải là một hàm :(
Nisanth Kumar

thephpdeveloper đã thêm một cái gì đó để làm cho nó chính xác ... nên làm điều đó ... xem ở trên đã được chỉnh sửa
Reigel

7
Điều này sẽ không hoạt động nếu chúng ta cố gắng thay thế nhiều hơn một giá trị cùng một lúc. :(
vissu

56
Để thay thế nhiều ký tự cùng một lúc, hãy sử dụng một số thứ như thế này : name.replace(/&/g, "-"). Ở đây tôi đang thay thế tất cả '&' ký tự bằng '-'. "G" có nghĩa là "toàn cầu".
vissu

9
Lưu ý - bạn có thể cần thêm dấu ngoặc vuông để tránh lỗi -title.replace(/[+]/g, " ")
Dante Cullari

67

Có lẽ cách thanh lịch nhất để làm điều này là làm điều đó trong một bước. Xem val().

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

so với:

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

Từ các tài liệu:

.val( function(index, value) )

Hàm (chỉ mục, giá trị) Một hàm trả về giá trị cần đặt.

Phương pháp này thường được sử dụng để đặt các giá trị của các trường biểu mẫu. Đối với <select multiple="multiple"> các phần tử, nhiều s có thể được chọn bằng cách chuyển vào một mảng.

Các .val()phương pháp cho phép chúng ta thiết lập giá trị bằng cách đi qua trong một hàm. Kể từ jQuery 1.4, hàm được truyền hai đối số, chỉ mục của phần tử hiện tại và giá trị hiện tại của nó:

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

Ví dụ này nối thêm "vật phẩm" vào giá trị của văn bản đầu vào.

Điều này đòi hỏi jQuery 1.4+.


nhưng như tôi thấy, anh chàng chỉ muốn thay đổi var valuevà không phải giá trị trong hộp văn bản như bạn đề xuất ...
Reigel

41

Tôi yêu phương thức xích của jQuery . Đơn giản chỉ cần làm ...

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

    //Or if you want to return the value:
    return $("#text").val().replace('.',':');

17
điều này không có gì để làm với chuỗi jquery thực sự. Sau khi bạn gọi .val()nó là một chuỗi thông thường.
zerkms

19

Một lót đơn giản:

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

1
điều này sẽ chỉ hoạt động nếu giá trị là một chuỗi ... và ngoài ra, gọi $("#text")hai lần trong đó không phải là một thực tiễn tốt ...
Reigel

OP cũng không xác định rằng anh ta muốn thay thế giá trị của $("#text"):)
Reigel

Nhận xét 1 ... Sai. Nhận xét 2 ... hãy suy nghĩ về logic của câu hỏi của anh ấy, không cần chỉ định.
VIDesignz

chứng minh điều đó .. và hãy nhớ, ngàyJan 27 '10 at 10:16
Reigel

bạn thậm chí không biết thực hành tốt .. bạn có thể muốn đọc điều này .. stackoverflow.com/questions/3230727/iêu
Reigel

6

Nó có thể được thực hiện với chức năng JavaScript thông thường replace().

value.replace(".", ":");

3
Tôi không chắc chắn nếu tôi bỏ lỡ một cái gì đó nhưng vì giá trị đến từ hộp văn bản, nó là một chuỗi không? Ví dụ jsfiddle.net/xMBuA
Anders

4

Bạn có thể sử dụng các hàm JavaScript như thay thế và bạn có thể gói mã jQuery trong ngoặc:

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

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

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

Hoặc nếu bạn 9.61đã là một chuỗi:

"9.61".replace('.',':')
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.