จะลบข้อความออกจากสตริงได้อย่างไร?


คำตอบ:


1157

var ret = "data-123".replace('data-','');
console.log(ret);   //prints: 123

เอกสาร


สำหรับการใช้งานทั้งหมดที่เกิดขึ้นจะถูกยกเลิก:

var ret = "data-123".replace(/data-/g,'');

PS: ฟังก์ชั่นแทนที่จะส่งกลับสตริงใหม่และปล่อยให้สตริงเดิมไม่เปลี่ยนแปลงดังนั้นใช้ค่าส่งคืนฟังก์ชั่นหลังจากการเรียกแทนที่ ()


จะแทนที่หลายนิพจน์ได้อย่างไร คุณต้องใช้การโทรซ้ำหลายครั้ง.
Dror Bar

124

สิ่งนี้ไม่มีอะไรเกี่ยวข้องกับ jQuery คุณสามารถใช้replaceฟังก์ชันJavaScript สำหรับสิ่งนี้:

var str = "data-123";
str = str.replace("data-", "");

คุณสามารถส่ง regex ไปยังฟังก์ชันนี้ได้ ในตัวอย่างต่อไปนี้มันจะแทนที่ทุกอย่างยกเว้นตัวเลข:

str = str.replace(/[^0-9\.]+/g, "");

คุณช่วยอธิบายว่า regex ทำอะไรได้บ้าง ฉันไม่เข้าใจว่าทำไมมันจึงแทนที่สตริงยกเว้นตัวเลขหาก0-9ระบุไว้
rotimi ที่ดีที่สุด

60

คุณสามารถใช้"data-123".replace('data-','');ตามที่กล่าวถึง แต่replace()จะแทนที่อินสแตนซ์แรกของข้อความที่ตรงกันเท่านั้นถ้าสตริงของคุณเป็นอะไรเช่น"data-123data-"นั้น

"data-123data-".replace('data-','');

จะแทนที่ข้อความที่ตรงกันแรกเท่านั้น และผลลัพธ์ของคุณจะเป็น"123data-"

การสาธิต

ดังนั้นหากคุณต้องการแทนที่ข้อความทั้งหมดที่ตรงกันในสตริงคุณจะต้องใช้การแสดงออกปกติกับgธงดังนี้:

"data-123data-".replace(/data-/g,'');

และผลลัพธ์ของคุณจะเป็น "123"

Demo2


28

คุณสามารถใช้ชิ้น () มัน returens charcters ระหว่างเริ่มต้นถึงจุดสิ้นสุด (รวมถึงจุดสิ้นสุด)

   string.slice(start , end);

นี่คือตัวอย่างบางส่วนเพื่อแสดงวิธีการทำงาน:

var mystr = ("data-123").slice(5); // jast define start point so output is "123"
var mystr = ("data-123").slice(5,7); // define start and end  so output is "12"
var mystr=(",246").slice(1); // returens "246"

การสาธิต


23

JavaScript แบบธรรมดาธรรมดาจะพอเพียง - jQuery ไม่จำเป็นสำหรับงานง่ายๆดังกล่าว:

var myString = "data-123";
var myNewString = myString.replace("data-", "");

ดู: .replace()เอกสารบน MDNสำหรับข้อมูลเพิ่มเติมและการใช้งาน


17

Ex: -

var value="Data-123";
var removeData=value.replace("Data-","");
alert(removeData);

หวังว่านี่จะใช้ได้ผลสำหรับคุณ


11

ฉันเคยชินกับวิธี C. (ชาร์ป) String.Remove ใน Javascript ไม่มีฟังก์ชั่นลบสำหรับสตริง แต่มีฟังก์ชั่น substr คุณสามารถใช้ฟังก์ชัน substr หนึ่งหรือสองครั้งเพื่อลบอักขระออกจากสตริง คุณสามารถสร้างฟังก์ชั่นต่อไปนี้เพื่อลบตัวอักษรที่ดัชนีเริ่มต้นไปจนถึงจุดสิ้นสุดของสตริงเช่นเดียวกับวิธี c # ก่อนโอเวอร์โหลดสตริง String.Remove (int startIndex):

function Remove(str, startIndex) {
    return str.substr(0, startIndex);
}

และ / หรือคุณสามารถสร้างฟังก์ชั่นต่อไปนี้เพื่อลบตัวอักษรที่ดัชนีเริ่มต้นและการนับเช่นเดียวกับ c # method ที่สองเกินพิกัด String.Remove (int startIndex, int count):

function Remove(str, startIndex, count) {
    return str.substr(0, startIndex) + str.substr(startIndex + count);
}

และจากนั้นคุณสามารถใช้ทั้งสองฟังก์ชั่นหรือหนึ่งในนั้นตามความต้องการของคุณ!

ตัวอย่าง:

alert(Remove("data-123", 0, 5));

เอาท์พุต: 123


9

ฟังก์ชั่นเล็ก ๆ น้อย ๆ ที่ฉันทำใช้ได้กับฉันเสมอ :)

String.prototype.deleteWord = function (searchTerm) {
    var str = this;
    var n = str.search(searchTerm);
    while (str.search(searchTerm) > -1) {
        n = str.search(searchTerm);
        str = str.substring(0, n) + str.substring(n + searchTerm.length, str.length);
    }
    return str;
}

// Use it like this:
var string = "text is the the cool!!";
string.deleteWord('the'); // Returns text is cool!!

ฉันรู้ว่ามันไม่ได้ดีที่สุด แต่มันได้ผลกับฉันเสมอ :)


คุณกำลังแสดงในคำตอบของคุณว่าฟังก์ชั่นการแทนที่ของสตริงทำงานมากหรือน้อยเพียงใด แต่ที่จริงแล้วการใช้ฟังก์ชั่นการแทนที่ของสตริงนั้นเป็นรหัสที่ง่ายและง่ายกว่ามากสำหรับคุณ!

9
str.split('Yes').join('No'); 

สิ่งนี้จะแทนที่การเกิดขึ้นทั้งหมดของสตริงเฉพาะนั้นจากสตริงเดิม


8

การใช้match()และNumber()เพื่อคืนnumberค่าตัวแปร:

Number(("data-123").match(/\d+$/));

// strNum = 123

นี่คือสิ่งที่คำสั่งข้างต้นทำ ... กำลังทำงานกลางคัน:

  1. str.match(/\d+$/)- ส่งกลับอาร์เรย์ที่มีการแข่งขันกับความยาวของตัวเลขใด ๆ strในตอนท้ายของ ['123']ในกรณีนี้ก็จะส่งกลับอาร์เรย์ที่มีรายการสายเดียว
  2. Number()- แปลงเป็นประเภทตัวเลข เนื่องจากอาร์เรย์ที่ส่งคืนจาก.match()ประกอบด้วยองค์ประกอบเดียวNumber()จะส่งคืนตัวเลข
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.