有谁知道这里发生了什么?为什么" - "未找到?在IRB中尝试一下。
如果你这样做
string = "(( :H – :2B – :3B – :HR )+( 2 * :2B )+( 3 * :3B )+( 4 * :HR ))/ :AB "
string.split(" ")[2] == "-"
它也会返回false。
答案 0 :(得分:5)
您从string.split(" ")[2]
获得的角色是–
。这可能看起来像普通的连字符,但实际上它与普通连字符不同:-
。
您可以通过获取每个的序数值来看到这一点:
string.split(" ")[2].ord # => 8211
"-".ord # => 45
因此,您应该检查与unicode字符\u2013
:
string.split(" ")[2] == "\u2013" # => true
或者您可以将所有\u2013
替换为-
:
string.gsub!("\u2013", "-")
string.split(" ")[2] == "-" # => true
答案 1 :(得分:0)
您正在比较两个不同的短划线字符。通常用键盘输入的正常短划线(ascii字符45)是你要比较的,但是你要解析的文字有ascii字符8211(短划线)。
见http://www.ascii.cl/htmlcodes.htm。
的确,如果只输入"-" == "-"
,您将获得true