B - camel_case 解説 /

実行時間制限: 2 sec / メモリ制限: 64 MB


問題文

以下の通りに、「キャメルケースの文字列」と「アンダースコア区切りの文字列」を定めます。

単語
英小文字で始まる、英小文字・数字から成る文字列
キャメルケースの文字列
1つ以上の単語を、最初の単語以外の先頭の文字を大文字にして連結した文字列
アンダースコア区切りの文字列
1つ以上の単語を、単語の間を1つのアンダースコアで区切って連結した文字列

また、キャメルケースの文字列とアンダースコア区切りの文字列には、 連結した後、最初や最後に1つ以上のアンダースコアが追加されることがあります。

文字列が与えられるので、キャメルケースの文字列とアンダースコア区切りの文字列を相互変換してください。
追加された行頭・行末のアンダースコアはそのまま保持するものとし、
キャメルケースの文字列でもアンダースコア区切りの文字列でもない場合は与えられた文字列をそのまま出力するものとします。
また、キャメルケースの文字列とアンダースコア区切りの文字列の両方に解釈できる文字列は
どちらであると考えても相互変換した結果が等しくなることが保証されます。


入力

入力は以下の形式で標準入力から与えられる。
c_1c_2…c_N
  • 入力として文字列が 1 行で与えられる。
  • 入力の文字列長 N は、 1 \leq N \leq 50 を満たす。
  • i 文字目の文字 c_i は 大文字のアルファベット (A, , Z) 、 小文字のアルファベット (a, , z) 、 数字 (0, , 9) 、 アンダースコア (_ ) のいずれかである。

出力

入力として与えられた文字列を相互変換した文字列を標準出力に 1 行で出力せよ。
なお、行の終端には改行が必要である。

入力例 1

lower_camel_case

出力例 1

lowerCamelCase

入力例 2

_snakeCase_

出力例 2

_snake_case_

入力例 3

KLab

出力例 3

KLab

入力例 4

_

出力例 4

_

入力例 5

a_bc_9a_b

出力例 5

a_bc_9a_b

出典

天下一プログラマーコンテスト2012 予選B