【问题标题】:Ruby claims " " isn't actually a space?Ruby 声称“”实际上不是一个空格?
【发布时间】:2021-01-19 21:22:11
【问题描述】:

我正在尝试解决为什么 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 只是为了查看是否显示了其他内容,但这对我来说并没有多大意义。

【问题讨论】:

    标签: ruby


    【解决方案1】:

    要么字符串包含some other kind of whitespace,要么你正在拆分其他类型的空格。例如,"foo\u2002bar" 看起来像 foo bar,但包含一个特殊的空格。

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

    2.6.5 :008 > msg = "foo\u2002bar"
     => "foo bar" 
    2.6.5 :009 > msg.dump
     => "\"foo\\u2002bar\"" 
    

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

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

    【讨论】:

    • 谢谢。 msg.dump 实际上将 \u0040 显示为显示为空白/空白的内容。这个解决方案对我有用。
    • @LewlSauce \u0040 是@。你确定吗?
    • 对不起,错字。那实际上是\u00A0
    • @LewlSauce 不间断空间。很高兴一切正常。
    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2013-07-09
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多