Tôi muốn thay thế tất cả các lần xuất hiện của các ký tự khoảng trắng (dấu cách, tab, dòng mới) trong JavaScript.
Làm thế nào để làm như vậy?
Tôi đã thử:
str.replace(/ /gi, "X")
Tôi muốn thay thế tất cả các lần xuất hiện của các ký tự khoảng trắng (dấu cách, tab, dòng mới) trong JavaScript.
Làm thế nào để làm như vậy?
Tôi đã thử:
str.replace(/ /gi, "X")
Câu trả lời:
Bạn muốn \s
Khớp với một ký tự khoảng trắng, bao gồm khoảng trắng, tab, nguồn cấp mẫu, nguồn cấp dữ liệu.
Tương đương với
[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
trong Firefox và [ \f\n\r\t\v]
trong IE .
str = str.replace(/\s/g, "X");
replace
hàm không sửa đổi str
, vì vậy bạn phải gán lại.
perl = TRUE
, nhưgsub(pattern = "[\\s]+", ..., perl = TRUE)
Chúng tôi cũng có thể sử dụng điều này nếu chúng tôi muốn thay đổi tất cả các khoảng trống được nối với một ký tự:
str.replace(/\s+/g,'X');
Xem nó trong hành động ở đây: https://regex101.com/r/d9d53G/1
Giải trình
/
\s+
/ g
\s+
phù hợp với bất kỳ ký tự khoảng trắng (bằng [\r\n\t\f\v ]
)+
Bộ định lượng - Kết hợp giữa một và không giới hạn số lần, càng nhiều lần càng tốt, trả lại khi cần (tham lam)
Bạn đã thử \s
chưa?
str.replace(/\s/g, "X");
Nếu bạn dùng
str.replace(/\s/g, "");
nó thay thế tất cả các khoảng trắng. Ví dụ:
var str = "hello my world";
str.replace(/\s/g, "") //the result will be "hellomyworld"
Thử cái này:
str.replace(/\s/g, "X")
\s\n\t
phù hợp: bất kỳ ký tự khoảng trắng, theo sau là một dòng mới, theo sau là tab.
Trên thực tế nó đã được làm việc nhưng
hãy thử cái này
lấy giá trị / \ s / g thành một biến chuỗi như
String a = /\s/g;
str = str.replaceAll(a,"X");
replaceAll
đến từ đâu
Tôi đã sử dụng phương thức "slugify" từ underscore.opes và nó hoạt động như một bùa mê:
https://github.com/epeli/underscore.opes#slugifystring-- chuỗi
Điều thú vị là bạn thực sự có thể chỉ cần nhập phương thức này, không cần nhập toàn bộ thư viện.