簡體   English   中英

如何在Ruby中刪除空格但不刪除utf-8字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM