Trong Ruby, tôi khuyên bạn nên sử dụng lớp ký tự Unicode của "tách Space" \p{Zs}
:
/\p{Zs}/u =~ "\xC2\xA0"
/\p{Zs}/u =~ "\u00A0"
/\p{Zs}/u =~ HTMLEntities.new.decode(' ')
Xem Ruby-tài liệu hướng dẫn để biết thêm Unicode character properties.
Lưu ý: Đảm bảo rằng chuỗi đầu vào của bạn là mã hóa UTF-8 hợp lệ. Cũng có các khoảng trống trong các mã hóa khác, ví dụ: "\ xA0" trong ISO-8859-1 (Latin1). More info on the "non-breaking space".
FYI: Trong hầu hết các hương vị và ngôn ngữ lập trình RegExp hỗ trợ Unicode, lớp ký tự \s
thường bao gồm tất cả các ký tự từ thuộc tính "separator" Unicode \p{Z}
(như đã đề cập bởi Tim Pietcker); Tuy nhiên, Java và Ruby là các ngoại lệ phổ biến ở đây và \s
chỉ khớp với [ \t\r\n\f]
.
Nguồn
2016-01-26 04:13:50
Cảm ơn Tim, \ p {Z} thật thú vị. Bạn có thể giải thích những gì bạn có nghĩa là bởi các dấu phân cách khác? – pguardiario
@pguardiario: Xin lỗi, tôi bằng cách nào đó đã bỏ lỡ nhận xét của bạn. Tiêu chuẩn Unicode định nghĩa nhiều dấu tách khác xuất hiện để được sử dụng chủ yếu trong các ngôn ngữ phương Đông, trong đó các từ không nhất thiết phải tách biệt rõ ràng bằng khoảng trắng. –