" - "==" - "返回false ..为什么?

Gar*_*one -1 ruby string irb

在此输入图像描述

有谁知道这里发生了什么?为什么" - "找不到?在IRB中尝试一下.

如果你这样做

string = "(( :H – :2B – :3B – :HR )+( 2 * :2B )+( 3 * :3B )+( 4 * :HR ))/ :AB "

string.split(" ")[2] == "-" 
Run Code Online (Sandbox Code Playgroud)

它也返回false.

Aug*_*ust 5

你得到的角色string.split(" ")[2].这可能看起来像一个普通的连字符,但它实际上是与普通连字符不同的字符:-.

您可以通过获取每个的序数值来看到这一点:

string.split(" ")[2].ord # => 8211
"-".ord # => 45
Run Code Online (Sandbox Code Playgroud)

因此,您应该检查与unicode字符的相等性\u2013:

string.split(" ")[2] == "\u2013" # => true
Run Code Online (Sandbox Code Playgroud)

或者你可以替换所有出现的\u2013-:

string.gsub!("\u2013", "-")
string.split(" ")[2] == "-" # => true
Run Code Online (Sandbox Code Playgroud)