-2

我想知道是否有办法返回单词的第一个字母。就像你输入 word("hey") 它只会返回字母 h。或者,如果您愿意,可以返回字母 e。自己一个人。我正在考虑使用中断方法或扫描,但我似乎无法让它们工作。

4

4 回答 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 回答