虽然它可能无法读取,但我希望有人可以告诉我是否可能 - 如果是这样 - 如何使以下代码正常工作
true if (string1 - string2) == predefined_distance
我希望使用Ruby的Open Classes可以实现这一点,但是查看UTF-8和Encoder::Converter
的文档我不确定它是否真的可以做除<=>
以外的任何事情。这根本不准确。也许我们可以转换为ASCII并比较这些值?
使用的一个例子可能是比较两个打开一个右括号,看看它们是否匹配,而不是为每种类型的括号定义单独的列表或容器,而是我们可以为任意两个任意字符定义一个距离。 / p>
答案 0 :(得分:2)
String类的内置方法ord
可以返回字符的编号:
true if (string1.chars.first.ord - string2.chars.first.ord) == predefined_distance
答案 1 :(得分:1)
你想要完成什么?你真的只想检查字符串中的第一个字符吗?此外,关于ASCII值,世界上有许多字符集不使用ASCII,甚至每个字符需要多个字节。因此,确保您对字符而不是字节进行操作非常重要。这是一个使用“红宝石”这个词的例子。在日语中,在irb:
2.3.0 :018 > s = 'ルビー'
=> "ルビー"
2.3.0 :019 > s.chars
=> ["ル", "ビ", "ー"]
2.3.0 :020 > s.chars.size
=> 3
2.3.0 :021 > s.bytes
=> [227, 131, 171, 227, 131, 147, 227, 131, 188]
2.3.0 :022 > s.bytes.size
=> 9
2.3.0 :023 > s.chars.first.ord.to_s(16)
=> "30eb"