ฉันจะแทนที่สตริงใน JavaScript เพื่อแปลง '9.61' เป็น '9:61' ได้อย่างไร


275

รับสายรหัส

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

และvalue = 9.61ผมต้องแปลงไป9.61 9:61ฉันจะใช้ฟังก์ชันแทนที่ JavaScript ที่นี่ได้อย่างไร


29
โปรดทราบว่าสิ่งนี้ไม่มีส่วนเกี่ยวข้องกับ jQuery แต่มีเพียงจาวาสคริปต์แบบธรรมดาเท่านั้น
Ikke

1
ฉันมีปัญหาที่คล้ายกัน ฉันมีตัวแปร 'var' ใน javascript และฉันต้องการแทนที่สตริง / อักขระในนั้น ฉันลองใช้รหัสนี้: var myObject = "% ของฉัน% ไดนามิก% ค่า \ n"; myObject = myObject.replace ( "%", "") แทน. ( "\ n", ""); ลอง myObject = myObject.replace ('%', ''). แทนที่ ('\ n', ''); มันทำให้ฉันข้อผิดพลาดที่แทนที่ไม่ได้เป็นที่รู้จักฟังก์ชั่น
Balaji Birajdar

ข้อความแสดงข้อผิดพลาดที่แน่นอนสำหรับปัญหาข้างต้นคือ "ข้อผิดพลาดรันไทม์ Microsoft JScript: วัตถุไม่สนับสนุนคุณสมบัติหรือวิธีการ 'แทนที่'"
Balaji Birajdar

คำตอบ:


539

ทำเช่นนี้:

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

อัปเดตเพื่อสะท้อนถึง jQuery เวอร์ชันปัจจุบัน และยังมีคำตอบมากมายที่นี่ซึ่งจะเหมาะสมกับสถานการณ์แบบนี้เช่นกัน คุณในฐานะนักพัฒนาจำเป็นต้องรู้ว่าอันไหน

แทนที่สิ่งที่เกิดขึ้นทั้งหมด

name.replace(/&/g, "-")การแทนที่ตัวอักษรหลายครั้งใช้บางสิ่งบางอย่างเช่นนี้ นี่ฉันเปลี่ยนทุกตัวอักษรด้วย& หมายถึง "ทั่วโลก"-g

หมายเหตุ - คุณอาจต้องเพิ่มวงเล็บเหลี่ยมเพื่อหลีกเลี่ยงข้อผิดพลาด -title.replace(/[+]/g, " ")

เครดิต vissu และ Dante Cullari


6
ฉันลองแล้ว แต่เกิดข้อผิดพลาดเป็น value.replace ไม่ใช่หน้าที่ :(
Nisanth Kumar

thephpdeveloper เพิ่มบางสิ่งบางอย่างเพื่อให้ถูกต้อง ... ที่ควรทำ ... ดูด้านบนแก้ไข
Reigel

7
สิ่งนี้จะไม่ทำงานหากเราพยายามแทนที่ค่ามากกว่าหนึ่งค่าในแต่ละครั้ง :(
vissu

56
name.replace(/&/g, "-")การแทนที่ตัวอักษรหลายครั้งใช้บางสิ่งบางอย่างเช่นนี้ ที่นี่ฉันกำลังแทนที่ '&' ตัวอักษรทั้งหมดด้วย '-' "g" หมายถึง "global"
vissu

9
หมายเหตุ - คุณอาจจำเป็นต้องเพิ่มวงเล็บเพื่อหลีกเลี่ยงข้อผิดพลาด -title.replace(/[+]/g, " ")
ดันเต้ Cullari

67

อาจเป็นวิธีที่สง่างามที่สุดในการทำเช่นนี้ในขั้นตอนเดียว val()ดู

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

เปรียบเทียบกับ:

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

จากเอกสาร:

.val( function(index, value) )

ฟังก์ชั่น (ดัชนีค่า) ฟังก์ชั่นกลับค่าที่จะตั้ง

โดยทั่วไปวิธีนี้จะใช้เพื่อตั้งค่าของเขตข้อมูลฟอร์ม สำหรับ <select multiple="multiple"> องค์ประกอบสามารถเลือกได้หลาย s โดยผ่านในอาร์เรย์

.val()วิธีการช่วยให้เราสามารถกำหนดค่าโดยผ่านในการทำงาน ในฐานะของ jQuery 1.4 ฟังก์ชันจะถูกส่งผ่านสองอาร์กิวเมนต์ดัชนีขององค์ประกอบปัจจุบันและค่าปัจจุบัน:

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

ตัวอย่างนี้ผนวกสตริง "items" เข้ากับค่าของอินพุตข้อความ

ต้องใช้ jQuery 1.4+


แต่เท่าที่ฉันเห็นผู้ชายคนนั้นเพียงแค่ต้องการเปลี่ยนvar valueและไม่ใช่ค่าในกล่องข้อความตามที่คุณแนะนำ ...
Reigel

41

ฉันชอบวิธีการของjQuery แค่ทำ ...

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

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

17
สิ่งนี้ไม่เกี่ยวข้องกับ jquery chaining จริง ๆ หลังจากที่คุณเรียกว่า.val()เป็นสตริงปกติ
zerkms

19

ซับง่าย:

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

1
งานนี้จะมีเพียงถ้าค่าเป็นสตริง ... และยังเรียก$("#text")สองครั้งในไม่มีการปฏิบัติที่ดี ...
Reigel

OP ยังไม่ได้ระบุว่าเขาอยากจะเปลี่ยนค่าของ$("#text"):)
Reigel

ความคิดเห็นที่ 1 ... ผิด ความคิดเห็นที่ 2 ... คิดเกี่ยวกับตรรกะของคำถามของเขาไม่จำเป็นต้องระบุ
VIDesignz

พิสูจน์ .. และจำวันที่Jan 27 '10 at 10:16
Reigel

คุณไม่ทราบวิธีปฏิบัติที่ดี .. คุณอาจต้องการอ่านสิ่งนี้ .. stackoverflow.com/questions/3230727/…
Reigel

6

replace()ก็สามารถทำได้ด้วยฟังก์ชัน JavaScript ปกติ

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

3
ฉันไม่แน่ใจว่าฉันพลาดบางสิ่ง แต่เนื่องจากค่ามาจากกล่องข้อความมันเป็นสตริงไม่ใช่หรือไม่ ตัวอย่างjsfiddle.net/xMBuA
Anders

4

คุณสามารถใช้ฟังก์ชัน JavaScript เช่นแทนที่และคุณสามารถใส่รหัส jQuery ในวงเล็บ:

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


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.