[英]how to remove whitespace but not utf-8 character in ruby
我想防止用戶寫空評論(空格,
等)。 所以我應用以下內容:
var.gsub(/^\s+|\s+\z|\s* \s*/.'')
但是,然后一個聰明的用戶通過使用\\302
或\\240
unicode字符找到了一個漏洞,因此我也過濾掉了這些字符。
然后在介紹幾種語言支持時遇到了問題,然后像Déjà vu
這樣的詞就變成了錯誤。 因為à
字符的一部分包含\\240
。 有什么方法可以刪除空白但不影響拉丁字符?
一種解決方法是在使用正則表達式刪除空白之前,使用iconv
丟棄無效的unicode字符(例如\\230
本身):
require 'iconv'
var1 = "Déjà vu"
var2 = "\240"
ic = Iconv.new('UTF-8//IGNORE', 'UTF-8')
valid1 = ic.iconv(var1) # => "D\303\251j\303\240 vu"
valid2 = ic.iconv(var2) # => ""
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.