LL Golf Hole 2 - 文字列に含まれる単語の最初の文字を大文字にする
Posted feedbacks - Groovy
リテラルを変換するだけなら{}の中だけで良かったのだけれど… Stringにメソッドを追加する形にしてみました。
このコードを実行するとStringにcapitalizeメソッドが追加され、
>>> "LL future".capitalize() "LL Future"
>>> "LL day and night".capitalize() "LL Day And Night"
あるいは、
>>> ["LL future", LL day and night].capitalize() ["LL Future", "LL Day And Night"]
のように動作します。タブとかも大丈夫のはず…
1 2 3 4 5 | String.metaClass.capitalize = {
return delegate.replaceAll(
/(¥s)(¥w)/,
{all, s, w -> s + w.toUpperCase()})
}
|
行頭が大文字じゃなくても大丈夫な様にしました。
あとちょこっとだけ短くしてみました。メソッド名、ほんとはcapitalizeWordsとかにすべきなのかなぁ?
1 | String.metaClass.capitalize = {delegate.replaceAll(/(^|¥s)(¥w)/, {all, s, w -> s + w.toUpperCase()})}
|
stdin → stdout
1 | print"$System.in".replaceAll(/\b./){it.toUpperCase()}
|
http://ja.doukaku.org/comment/6946/ の引数版
$System.inの挙動がよく分からないのでargsにしました。
引数で渡す文字列は ""付きの"LL day and night" のこと。
実行結果
------------------
LL Day And Night
$System.inの挙動がよく分からないのでargsにしました。
引数で渡す文字列は ""付きの"LL day and night" のこと。
実行結果
------------------
LL Day And Night
1 | printf args[0].replaceAll(/\b./){it.toUpperCase()}
|




takano32
#6901()
[
Ruby
]
Rating2/10=0.20
文字列に含まれる単語について、それぞれの単語の最初の文字を大文字にしてください。
たとえば、"LL future" と与えられたときは "LL Future" と出力する。"LL day and night" と与えられたときは "LL Day And Night" と出力する。
与えられる文字列はリテラルで表記する、標準入力で与えられる、引数で与えられるなどは自由とします。
余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。
※LL Future実行委員の高野光弘です。この出題は LL Future公式の出題であり、優れたものについてはLL Golfのセッションでご紹介させていただくかもしれません。ご理解の上、ご投稿ください。また、LL Futureのチケットは現在も発売中です。よろしければ、メインイベントの方にもぜひご参加ください。
see: LL Golf
Rating2/10=0.20-0+
[ reply ]