
有谁知道这里发生了什么?为什么" - "找不到?在IRB中尝试一下.
如果你这样做
string = "(( :H – :2B – :3B – :HR )+( 2 * :2B )+( 3 * :3B )+( 4 * :HR ))/ :AB "
string.split(" ")[2] == "-"
Run Code Online (Sandbox Code Playgroud)
它也返回false.
你得到的角色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)