Ruby,是什么让字母大于另一个或什么使字母值?

时间:2015-04-22 01:48:21

标签: ruby arrays variables

所以我一直在试验这个特殊的问题。 我正在创建一个方法来确定单词的元音是否按正确的顺序排列。示例:“Apple”有效,但“犹他”没有。 “a”出现在“e”之前,“u”出现在“a”之前

这是我的方法:

  def ordered_vowel_word?(word)
  vowels = ["a", "e", "i", "o", "u"]
  letters_array = word.split("")

  vowels_array = letters_array.select { |char| vowels.include?(char)}
  (0..vowels_array.length - 2).all? do |a|
  vowels_array[a] <= vowels_array[a + 1]
  end
end

有效。我唯一困惑的是最后一行,为什么我的元音比另一个元音更大?除非我在代码中引用http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters,否则字母如何大于或小于另一个字母?

2 个答案:

答案 0 :(得分:1)

它可能会比较两个字符的ASCII值。例如:

"a" < "b" is True
"K" < "Z" is True
"c" < "b" is False

答案 1 :(得分:1)

我认为可以安全地假设Ruby确实在比较ASCII代码值,尽管在幕后。 要获得ASCII代码,您可以使用

   'a'[0].ord
=> 97

&#34; Z&#34;的ASCII码是90,&#34; A&#34;的代码是65,&#34; [&#34;是91。

请注意以下比较的输出:

  'A' < 'z' ## capital letters before lowercase
=> true

  'Z' < 'a' ## capital letters before lowercase
=> true

   '[' < 'a' ## [ \ ] ^ _ ` nested between capital and lowercase letters
=> true

   '[' < 'Z' ## [ \ ] ^ _ ` nested between capital and lowercase letters
=> false

特别是,字母与这6个符号([\ _ ^ ^ _`)的比较,这些符号在大写和小写字母之间具有ASCII码,这提供了相当令人信服的证据,证明了Ruby在字母之间进行比较的方式(更一般地说,字符串)。