แทนที่อักขระเว้นวรรคทั้งหมด


141

ฉันต้องการแทนที่อักขระเว้นวรรค (ช่องว่างแท็บบรรทัดใหม่) ทั้งหมดใน JavaScript
ต้องทำอย่างไร?

ฉันเหนื่อย:

str.replace(/ /gi, "X")


1
"X" คืออะไรและทำไม?
Muhammad Shahzad

แล้ว string.replace ('', "X");
Ramesh Rajendran

คำตอบ:


321

คุณต้องการ \s

จับคู่อักขระช่องว่างสีขาวเดียว ได้แก่ ช่องว่างแท็บฟีดฟอร์มฟีดบรรทัด

เทียบเท่ากับ

[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

ในFirefoxและ[ \f\n\r\t\v]ในIE


str = str.replace(/\s/g, "X");

42
+1 สำหรับการจดจำเพื่อแสดงว่าreplaceฟังก์ชันไม่ได้แก้ไขstrดังนั้นคุณต้องกำหนดกลับ
FishBasketGordo

1
ในฟังก์ชันคุณสามารถส่งคืน str.replace ได้ดังนั้นคุณไม่จำเป็นต้องกำหนดในขอบเขตนั้น
Steve K

อย่าลืมให้ R ใช้perl = TRUEเช่นgsub(pattern = "[\\s]+", ..., perl = TRUE)
MS Berends

33

\sเป็นอักขระเมตาที่ครอบคลุมพื้นที่สีขาวทั้งหมด คุณไม่จำเป็นต้องทำให้มันไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ - พื้นที่สีขาวไม่มีตัวพิมพ์

str.replace(/\s/g, "X")

21

นอกจากนี้เรายังสามารถใช้สิ่งนี้หากเราต้องการเปลี่ยนช่องว่างที่รวมหลาย ๆ ตัวด้วยอักขระตัวเดียว:

str.replace(/\s+/g,'X');

ดูการใช้งานจริงที่นี่: https://regex101.com/r/d9d53G/1

คำอธิบาย

/ \s+/ ก

  • \s+จับคู่อักขระช่องว่างใด ๆ (เท่ากับ[\r\n\t\f\v ])
  • + Quantifier - จับคู่ระหว่างหนึ่งครั้งและไม่ จำกัด จำนวนครั้งมากที่สุดเท่าที่จะเป็นไปได้โดยให้คืนตามต้องการ (โลภ)

  • แฟล็กรูปแบบสากล
    • ตัวปรับแต่ง g: g lobal การแข่งขันทั้งหมด (อย่ากลับมาหลังจากนัดแรก)


4

ถ้าคุณใช้

str.replace(/\s/g, "");

มันจะแทนที่ช่องว่างทั้งหมด ตัวอย่างเช่น:

var str = "hello my world";
str.replace(/\s/g, "") //the result will be "hellomyworld"

4

ลองสิ่งนี้:

str.replace(/\s/g, "X")

ไม่ได้ผล \s\n\tตรงกัน: อักขระช่องว่างใด ๆ ตามด้วยขึ้นบรรทัดใหม่ตามด้วยแท็บ
Daniel Cassidy

3

ไม่ใช่ / gi แต่ / g

var fname = "My Family File.jpg"
fname = fname.replace(/ /g,"_");
console.log(fname);

ให้

"My_Family_File.jpg"

1

จริงๆแล้วมันได้ผล แต่

ลองดูสิ

ใช้ค่า / \ s / g เป็นตัวแปรสตริงเช่น

String a = /\s/g;

str = str.replaceAll(a,"X");

คุณได้replaceAllมาจากไหน?
Ionel Lupu

1

คุณสามารถใช้ฟังก์ชัน trim

let str = ' Hello World ';

alert (str.trim());

พื้นที่ด้านหน้าและด้านหลังทั้งหมดรอบ ๆ Hello World จะถูกลบออก


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