Ruby声称“”实际上不是一个空格?

我正在尝试解决为什么 Ruby 没有用空格分割我的字符串。例如:

[1] pry(#<irb>)> msg
=> "!iex <http://test-domain.com.au|test-domain.com.au> <mailto:first.last@test-domain.com.au|first.last@test-domain.com.au> FirstName"
[2] pry(#<irb>)> msg.split(" ")
=> ["!iex <http://test-domain.com.au|test-domain.com.au> <mailto:first.last@test-domain.com.au|first.last@test-domain.com.au> FirstName"]
[3] pry(#<irb>)> msg.include? " "
=> false
[8] pry(#<irb>)> msg.inspect
=> ""!iex <http://test-domain.com.au|test-domain.com.au> <mailto:first.last@test-domain.com.au|first.last@test-domain.com.au> FirstName""
[9] pry(#<irb>)> 

正如您在上面看到的,我的字符串似乎包含空格,但该split方法不起作用。我试图inspect在字符串上运行只是为了查看是否正在显示其他内容,但这对我来说并没有多大意义。

回答

要么字符串包含其他类型的空格,要么您正在拆分其他类型的空格。例如"foou2002bar"将看起来像foo bar但包含一个特殊的空间。

尝试msg.dump查看特殊字符。

2.6.5 :008 > msg = "foou2002bar"
 => "foo?bar" 
2.6.5 :009 > msg.dump
 => ""foou2002bar"" 

要在任何空格或制表符上拆分,请在[[:blank:]] 字符类上拆分。

2.6.5 :006 > msg.split(/[[:blank:]]/)
 => ["foo", "bar"] 


以上是Ruby声称“”实际上不是一个空格?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>