2013-03-20 2 views
-2

Мне интересно, есть ли способ вернуть первую букву слова. например, если вы введете слово («эй»), оно вернет только букву h. или если вы хотели, чтобы вы могли вернуть письмо e. индивидуально сами по себе. Я рассматривал возможность использования метода break или сканирования, но я не могу заставить их работать.Ruby Методы возврата отдельных писем

+3

'строка [0]' и что это , – oldergod

+0

вы можете использовать диапазон, как этот пример: http://stackoverflow.com/questions/6184697/how-to-get-a-substring-of-text – gmartellino

+0

@oldergod Вы можете использовать '' hey ".chr' as см. ниже. – squiguy

ответ

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' 
2

Да:

def first_letter(word) 
    word[0] 
end 

Или, если с помощью Ruby 1.8:

def first_letter(word) 
    word.chars[0] 
end 

Используйте синтаксис str[index], чтобы получить определенную букву слова (0 является первой буквой, 1 второе, и так на).

+0

он просто возвращает 104? Что это значит? – Evan

+0

@Evan Это значение ascii в десятичной форме для «h». – squiguy

+0

@Evan: Oh! You 're на * старой * версии Ruby. Держись. – Linuxios

2

другой метод, который вы можете посмотреть на это chr, которая возвращает первый символ строки

>> 'hey'.chr # 'h' 

вы также можете посмотреть на http://www.ruby-doc.org/core-1.9.3/String.html#method-i-slice, чтобы увидеть, как вы можете комбинировать регулярному_выражению и индексы, чтобы получить часть строки.

UPDATE: Если вы на Ruby 1.8, это немного хака но

>> 'hey'[0] # 104 
>> 'hey'[0..0] # 'h' 
>> 'hey'.slice(0,1) # 'h' 
+1

OP, похоже, находится на рубине 1.8, а 'chr' недоступен в то время :( – oldergod

+0

, тогда это облом, так или иначе, есть много способов сделать то, что он хочет, в любой версии ruby :) – jvnill

+0

@ jvnill: Посмотрите на мой ответ. – Linuxios

0

Используя ваш пример - слово "эй":

h = "hey" 

puts h[0] 

Это должно вернуть h.

Смежные вопросы