2016-04-22 71 views
1

雖然它可能不是可讀的,我希望有人能告訴我,如果這是可能的 - 如果又如何 - 使下面的代碼工作得到兩個字符代碼之間的差異在Ruby中

true if (string1 - string2) == predefined_distance 

我我希望這可以使用Ruby的Open Classes來實現,但查看UTF-8和Encoder::Converter的文檔我不確定實際上是否可以做任何超過<=>的操作,而這些操作並不十分精確。也許我們可以轉換爲ASCII並比較這些值?

使用示例可能是比較兩個打開的右括號,看看它們是否匹配,而不是爲每個括號定義單獨的列表或容器,而是可以爲任意兩個任意字符定義一個距離。

+0

不知道爲什麼這個問題是downvoted。這很好。我打算抵消。 – Velocibadgery

+0

SO往往是一個敵對的地方,所以謝謝! – Csteele5

+0

各支架類型之間的UTF-8/ASCII距離不是恆定的,例如, '('和')'有1的距離,而'['和']'有2的距離。 – Stefan

回答

1

它是什麼,你要完成?你真的只想檢查字符串中的第一個字符嗎?另外,關於ASCII值,世界上有很多不使用ASCII的字符集,甚至每個字符需要多個字節。所以確保您使用字符而不是字節是很重要的。下面是一個在日語中使用單詞「ruby」的例子,在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"