4

今、私は持っています

value = "United states of america"
words_to_ignore = ["the","of"]
new_string = value.split(' ').map {|w| w.capitalize }.join(' ')

私がここでやろうとしているのは、単語を除いてof、残りを大文字にしたいということです。したがって、出力は になりますUnited States of America。これを正確に行う方法はわかりません。

4

5 に答える 5

6

これを試して:

  new_string = value.split(' ')
    .each{|i| i.capitalize! if ! words_to_ignore.include? i }
    .join(' ')
于 2013-02-11T19:10:34.827 に答える
1

多分次のようなものを試してください:

value = "United state of america"
words_to_ignore = ["the","of"]
new_string = value.split(' ').map do |w| 
  unless words_to_ignore.include? w
    w.capitalize
  else
    w
  end
end
new_string[0].capitalize!
new_string = new_string.join(' ')
于 2013-02-11T19:08:56.803 に答える
1

ハッシュを使用して大文字化手順と例外を 1 つのパッケージに格納することを提案します。

value       = 'united states of america'
title_cases = Hash.new {|_,k| k.capitalize }.merge({'of' => 'of', 'off' => 'off'})
new_string  = value.split(" ").map {|w| title_cases[w] }.join(' ') #=> "United States of America"
于 2013-02-11T19:14:04.213 に答える
0

この方法を使用して、常に同じ結果を強制できます。

downcase_words = ["of", "the"]
your_string.split(' ').each{ |word| (downcase_words.include? word.downcase) ? 
                                     word.downcase! : word.capitalize! }.join(' ')

your_string は次のようになります。


アメリカ合衆国」 「アメリカ合衆国」 「アメリカ合衆国

結果は常に「United States of America」になります。

于 2016-10-06T14:04:41.723 に答える