package Ġcom . l ith ium . kap ital ize Ċ Ċ class ĠK ap ital ize Helper Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġis R oman Num er als ( input : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinput . toLowerCase (). matches ( Regex ("^ m { 0 , 4 }( cm | cd | d ? c { 0 , 3 })( xc | xl | l ? x { 0 , 3 })( ix | iv | v ? i { 0 , 3 }) $ ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġcapital ize After Char ( kap ital ize : ĠK ap ital ize ?, Ġafter String : ĠString , Ġinput : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( input . contains ( after String )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġinput . split ( after String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( list [ 0 ] Ġ+ Ġafter String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . size Ġ>= Ġ 2 ) Ġif Ġ( kap ital ize Ġ!= Ġnull ) ĠstringBuilder . append ( kap ital ize . capitalize ( list [ 1 ]). capitalize ()) Ġelse ĠstringBuilder . append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ 1 ]. capitalize () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Indexed Ġ{ Ġindex , Ġs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ 1 ) ĠstringBuilder . append ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġinput ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }