11
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi cần thay thế các ký tự Unicode được xác định trên đây
Tôi đã có được điều này cho đến nay nhưng dường như nó sẽ loại bỏ tất cả không gian bao gồm cả các vũ trụ tiêu chuẩn:
var str = "Hello this is a test of the site";
str= str.replace[/[ \u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,'']
Kết quả - Hellothisisatestofthesite
Tôi chỉ muốn xóa ký tự Unicode là U+2003 giữa 'Kiểm tra' và 'của' trong chuỗi.
Bojangles
97.3K48 Huy hiệu vàng170 Huy hiệu bạc205 Huy hiệu đồng48 gold badges170 silver badges205 bronze badges
Đã hỏi ngày 7 tháng 5 năm 2013 lúc 10:19May 7, 2013 at 10:19
Xóa không gian thông thường mà bạn có đầu tiên trong mẫu:
str = str.replace[/[\u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,''];
Đã trả lời ngày 7 tháng 5 năm 2013 lúc 10:21May 7, 2013 at 10:21
GuffaguffaGuffa
674K108 Huy hiệu vàng722 Huy hiệu bạc995 Huy hiệu Đồng108 gold badges722 silver badges995 bronze badges
3
thử cái này:
var str = "Hello this is a test of the site";
str= str.replace[/[\u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,'']
Giống như bạn đã làm, nhưng với '' [không gian thông thường]
Đã trả lời ngày 7 tháng 5 năm 2013 lúc 10:21May 7, 2013 at 10:21
GuffaguffaKuf
674K108 Huy hiệu vàng722 Huy hiệu bạc995 Huy hiệu Đồng6 gold badges64 silver badges89 bronze badges
thử cái này:
str = str.replace[/[?! ]\s/g,''];
Giống như bạn đã làm, nhưng với '' [không gian thông thường]
Đã trả lời ngày 7 tháng 5 năm 2013 lúc 10:21May 7, 2013 at 10:21
Guffaguffaelclanrs
674K108 Huy hiệu vàng722 Huy hiệu bạc995 Huy hiệu Đồng21 gold badges132 silver badges169 bronze badges
1
thử cái này:
str= str.replace[/\s+/g,' '] ;
Giống như bạn đã làm, nhưng với '' [không gian thông thường]Nov 20, 2013 at 9:50
user1251840user1251840user1251840
Kufkuf5 silver badges8 bronze badges
0
16.8k6 Huy hiệu vàng64 Huy hiệu bạc89 Huy hiệu Đồng
str = str.replace[/[\u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,''];
2Tôi nghĩ rằng bạn có thể đơn giản hóa, thử điều này:
Bản demo: //jsbin.com/acexun/2/editApr 25 at 12:18
ElclanrselclanrsWill Hanley
91K21 Huy hiệu vàng132 Huy hiệu bạc169 Huy hiệu đồng1 silver badge14 bronze badges
Loại bỏ dấu câu trong JavaScript là một nhiệm vụ tương đối dễ dàng, nhưng loại bỏ các điểm nhấn, chỉ còn lại các chữ cái khó khăn hơn một chút. Bất kể tình huống nào, tôi có dưới một số chức năng tối giản có thể được sử dụng cho cả hai trường hợp. Để loại bỏ các điểm nhấn và cedilla khỏi một chuỗi và trả về cùng một chuỗi mà không có các điểm nhấn, chúng ta có thể sử dụng phương thức chuỗi.prototype.normize của ES6, theo sau là chuỗi.prototype.replace:String.prototype.normalize method, followed by a
String.prototype.replace: Giải trình Phương thức Normalize đã được giới thiệu trong phiên bản ES6 của JavaScript vào năm 2015. Nó phục vụ để chuyển đổi một chuỗi thành định dạng Unicode tiêu chuẩn của nó. Trong trường hợp này, chúng tôi sử dụng tham số NFD có thể tách các điểm nhấn khỏi các chữ cái và trả về mã unicode của chúng. Để hiểu rõ hơn về cách chuyển đổi này thành Unicode hoạt động, xem bên dưới: Sau đó, phương pháp thay thế tất cả các sự xuất hiện của các ký tự điều chỉnh, kết hợp chúng theo trình tự Unicode \ U0300 - \ U036F, một lợi thế khác của ES6 đã được thêm vào để cho phép các phạm vi Unicode trong Regex. Để loại bỏ các điểm nhấn và các ký tự đặc biệt khác như /?! [], chỉ cần sử dụng cùng một công thức ở trên, chỉ thay thế mọi thứ trừ các chữ cái và số. Giải trình Để hiểu những gì xảy ra trong mã trên, tôi khuyên bạn nên đọc đoạn trước mà tôi nói về Unicode và phương thức bình thường hóa. Phần bổ sung duy nhất, trong trường hợp này, là tạo 2 nhóm trong regex thông qua Cách xóa các điểm nhấn trong JavaScript
const str = 'ÁÉÍÓÚáéíóúâêîôûàèìòùÇç';
const parsed = str.normalize['NFD'].replace[/[\u0300-\u036f]/g, ''];
console.log[parsed];
// String Á in UTF-18 has 1 digit
'Á'.length; // 1
// String Á in Unicode has 2 digits: \u0041\u0301
'Á'.normalize['NFD'].length; // 2
// If we try to represent Unicode, we'll obtain the following result
console.log['\u0041\u0301']; // Á
Xóa tất cả các ký tự đặc biệt trong JavaScript
const str = 'ÁÉÍÓÚáéíóúâêîôûàèìòùÇç/.,[email protected]#$%&_-12345';
const parsed = str.normalize['NFD'].replace[/[[\u0300-\u036f]|[^0-9a-zA-Z]]/g, ''];
console.log[parsed];
3 và thêm vào nhóm 2 biểu thức thông thường str = str.replace[/[\u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,''];
4, có nghĩa là: bất cứ điều gì không [^] 0-9, A-Z hoặc A-Z, cũng được thay thế. str = str.replace[/[\u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,''];
Nếu bạn không muốn xóa không gian, chỉ cần thêm
str = str.replace[/[\u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,''];
5:str.normalize['NFD'].replace[/[[\u0300-\u036f]|[^0-9a-zA-Z\s]]/g, '']
Thay thế các ký tự đặc biệt
Một trường hợp sử dụng khá thường xuyên khác là sự cần thiết phải xóa các điểm nhấn và sau đó thay thế các ký tự đặc biệt bằng một số khác, ví dụ: "Bất kỳ cụm từ nào" -> "bất kỳ cụm từ".
Có một biểu thức chính quy rất tốt để thay thế các ký tự không phải là chữ cái hoặc số phổ biến, nhưng biểu thức này cũng loại bỏ các điểm nhấn.
'Here\'s à sentence'.replace[/[^\w\-]+/g, '-']; // Here-s-sentence
Nếu chúng ta chỉ muốn xóa các điểm nhấn và sau đó thay thế các ký tự đặc biệt khác, chúng ta cần thực hiện các loại được đề xuất trong ví dụ đầu tiên:
str = str.replace[/[\u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,''];
0Nhưng có lẽ bạn cũng cần phải thay thế dấu gạch nối không cần thiết, như trong trường hợp "Đây là một câu !!!" biến thành "Điều này là một bản án ---".
Dưới đây là một chức năng hoàn chỉnh để loại bỏ các điểm nhấn, thay thế các ký tự đặc biệt bằng dấu gạch nối, cũng loại bỏ các dấu gạch nối bổ sung:
str = str.replace[/[\u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,''];
1Nếu bạn muốn sử dụng cùng một chức năng này để "trượt" một URL, chỉ cần thêm
str = str.replace[/[\u00A0\u1680\u180e\u2000-\u2009\u200a\u200b\u202f\u205f\u3000]/g,''];
6 ở cuối và nó đã hoàn thành!Tôi nghĩ rằng tôi đã bao gồm tất cả các trường hợp định kỳ hơn khi làm việc với các điểm nhấn và các nhân vật đặc biệt trong JavaScript. Tôi biết rằng đó là một thách thức bổ sung cho nhiều ngoại ngữ không có phương pháp tích hợp để đối phó với các nhân vật đặc biệt.