从Ruby变量中删除空格的万无一失的方法?

2 ruby whitespace ruby-on-rails strip

我正在使用Ruby on Rails 4.2.7。我无法从变量中删除空白。我不知道它是哪种空白。有没有万无一失的剥离方法?当我从某个变量剪切并粘贴时,我无法剥离空格,但是,当我键入空格时,一切都很好。请参阅下面的控制台:

2.3.0 :004 >   test = " 21"
 => " 21" 
2.3.0 :005 > test.strip
 => " 21" 
Run Code Online (Sandbox Code Playgroud)

我已经从其他来源剪切并粘贴了空白,并且没有剥离空白。有什么办法可以对变量使用某种万无一失的剥离方法吗?

mu *_*ort 5

您可能具有非ASCII Unicode空白字符,最有可能是0x00A0:

> test = "\u00A021"
 => " 21" 
> test.strip
 => " 21" 
Run Code Online (Sandbox Code Playgroud)

并且String#strip仅(当前)知道ASCII空格:

跳闸 ?new_str
[...]

空格定义为以下任何字符:null,水平制表符,换行符,垂直制表符,换页符,回车符,空格。

您可以通过String#gsubSpacecharacter属性手动完成此操作:

> test = "\u00A0 21 \t\u00a0"
 => "  21 \t " 
> test.gsub(/\A\p{Space}+|\p{Space}+\z/, '')
 => "21" 
Run Code Online (Sandbox Code Playgroud)