从字符串中删除空格,然后转换为整数

时间:2019-12-02 16:48:49

标签: ruby

我正在构建Rails 5应用程序。 在这个应用程序中,我需要将字符串转换为整数。

字符串看起来像这样:

11 454

8 080

当我尝试下面的代码时,我可以删除空格,然后删除.to_i

"8 008".gsub(/\s+/, "")
 => "8008" 

但是当我尝试另一个数字时,它不会删除空格

"11 301".gsub(/\s+/, "")
 => "11 301" 

在转换为整数之前,我需要先删除空格,否则我只会得到第一个数字,例如8或11。

我在做什么错了?

已更新

有时它可以工作,有时却不可以

2.4.2 :103 > "11 301".gsub(/\s+/, "")
 => "11301" 
2.4.2 :104 > "11 301".codepoints
 => [49, 49, 160, 51, 48, 49] 
2.4.2 :105 > "11 301".gsub(/\s+/, "")
 => "11 301" 
2.4.2 :106 > 

已更新2

结果证明这是一个不间断的空间,并通过(如下选择的答案中所建议的)解决了该问题:

value.gsub("\u00A0", "")

1 个答案:

答案 0 :(得分:4)

正如the documentation所说,/\s/等效于字符类/[ \t\r\n\f\v]/。换句话说,/\s/是空格,制表符,回车符,换行符,换页符或垂直制表符。

但是,您有一个U+00A0 NO-BREAK SPACE字符,该字符不在与/\s/匹配的字符列表中。

一种更好的选择是与/\p{Blank}//\p{Space}/之类的Unicode字符属性进行匹配。