我想知道是否有办法返回单词的第一个字母。就像你输入 word("hey") 它只会返回字母 h。或者,如果您愿意,可以返回字母 e。自己一个人。我正在考虑使用中断方法或扫描,但我似乎无法让它们工作。
问问题
365 次
4 回答
2
是的:
def first_letter(word)
word[0]
end
或者,如果使用 Ruby 1.8:
def first_letter(word)
word.chars[0]
end
使用语法str[index]
获取单词的特定字母(0 是第一个字母,1 秒,依此类推)。
于 2013-03-20T02:15:52.463 回答
2
您可以查看的另一种方法是chr
返回字符串的第一个字符
>> 'hey'.chr # 'h'
您还可以查看http://www.ruby-doc.org/core-1.9.3/String.html#method-i-slice了解如何结合正则表达式和索引来获取字符串的一部分。
更新:如果您使用的是 ruby 1.8,这有点骇人听闻,但
>> 'hey'[0] # 104
>> 'hey'[0..0] # 'h'
>> 'hey'.slice(0,1) # 'h'
于 2013-03-20T02:27:20.350 回答
1
这是一个幼稚的实现,但是您可以使用它method_missing
来创建一个 DSL,它允许您在一个单词中查询不同位置的字母:
def self.method_missing(method, *args)
number_dictionary = {
first: 1,
second: 2,
third: 3,
fourth: 4,
fifth: 5,
sixth: 6,
seventh: 7,
eighth: 8,
ninth: 9,
tenth: 10
}
if method.to_s =~ /(.+)_letter/ && number = number_dictionary[$1.to_sym]
puts args[0][number - 1]
else
super
end
end
first_letter('hey') # => 'h'
second_letter('hey') # => 'e'
third_letter('hey') # => 'y'
于 2013-03-20T03:24:37.903 回答
0
使用您的示例-“嘿”一词:
h = "hey"
puts h[0]
这应该返回h
。
于 2013-03-20T02:29:23.587 回答