所以我一直在试验这个特殊的问题。 我正在创建一个方法来确定单词的元音是否按正确的顺序排列。示例:“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,否则字母如何大于或小于另一个字母?
答案 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在字母之间进行比较的方式(更一般地说,字符串)。