1. ホーム
  2. ruby

[解決済み] Ruby で文字列の最初の文字を大文字にする方法

2022-05-10 23:45:03

質問

その upcase メソッドは文字列全体を大文字にしますが、私は最初の文字だけを大文字にする必要があります。

また、ドイツ語やロシア語など、一般的な言語にも対応する必要があります。

どうすればいいのでしょうか?

どのように解決するのですか?

使用するRubyのバージョンに依存します。

Ruby 2.4以降。

というように、動作します。 ルビー v2.4.0 は、Unicodeのケースマッピングをサポートしています。

"мария".capitalize #=> Мария

Ruby 2.3以下。

"maria".capitalize #=> "Maria"
"мария".capitalize #=> мария

問題なのは、これが思い通りに動いてくれないことです。 мария ではなく Мария .

Railsを使用している場合は、簡単な回避策があります。

"мария".mb_chars.capitalize.to_s # requires ActiveSupport::Multibyte

そうでない場合は ユニコード gem を使って、このように使用します。

require 'unicode'

Unicode::capitalize("мария") #=> Мария

Ruby 1.8です。

必ず コーディング のマジックコメントです。

#!/usr/bin/env ruby

puts "мария".capitalize

与える invalid multibyte char (US-ASCII) , 一方

#!/usr/bin/env ruby
#coding: utf-8

puts "мария".capitalize

はエラーなく動作しますが、実際の大文字表記については "Ruby 2.3 and lower" のセクションも参照してください。