Ruby空间字符不等于空格字符

Ant*_* L 1 ruby string

在以下语句中,其中一个空格来自用户的输入(我从远程Rails控制台复制用户的角色(ActiveRecord字段)并粘贴它),另一个来自我的键盘.声明返回false:

" " == "?" # => false
" ".include? "?" # => false
Run Code Online (Sandbox Code Playgroud)

关于为什么/如何发生这种情况的任何想法?

Ale*_*kin 5

要验证用户输入的空白,不应使用==和/或include?帮助程序.人们应该使用现代的正则表达式来匹配空间.

仅供参考:UTF-8规格中有十个以上的空白字符,包括但不限于:

spaces = {
  space_medium_mathematical_space: "?",
  spaces_em_quad: "?",
  spaces_em_space: "?",
  spaces_en_quad: "?",
  spaces_en_space: "?",
  spaces_figure_space: "?",
  spaces_four_per_em_space: "?",
  spaces_hair_space: "?",
  spaces_punctuation_space: "?",
  spaces_six_per_em_space: "?",
  spaces_thin_space: "?",
  spaces_three_per_em_space: "?"
}
Run Code Online (Sandbox Code Playgroud)

为了匹配它们,人们使用\p{Space}匹配器.

spaces.values.map { |s| s == ' ' }
#? [false, false, false, false, false, false,
#   false, false, false, false, false, false]
Run Code Online (Sandbox Code Playgroud)

但:

spaces.values.map(&/\A\p{Space}*\z/.method(:match?))
#? [true, true, true, true, true, true,
#   true, true, true, true, true, true]
Run Code Online (Sandbox Code Playgroud)