package Ġkr . fel iz . tutorial _ collection . le mon fox . widget . utils Ċ Ċ import Ġjava . util .* Ċ import Ġkotlin . math . min Ċ Ċ fun ĠString . to Upper (): ĠString Ġ= Ġthis . toUpperCase ( Locale . ROOT ) Ċ fun ĠString . to Lower (): ĠString Ġ= Ġthis . toLowerCase ( Locale . ROOT ) Ċ Ċ fun ĠString . currency Symbol ( type : ĠSymbol Case ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSymbol Case . UPPER Ġ-> Ġthis . to Upper () ĊĠĠĠĠĠĠĠ ĠSymbol Case . LOWER Ġ-> Ġthis . to Lower () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString ?. get Mask String ( type : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġstr Ġ= Ġthis ĊĠĠĠ Ġvar Ġmask ing Ġ= Ġ"" ĊĠĠĠ Ġval Ġhidden String Ġ= Ġ"*" ĊĊĠĠĠ Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMask ing Type . NAME Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr . forEach Indexed Ġ{ Ġi , Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask ing Ġ+= Ġif Ġ( i Ġ== Ġ 0 ) Ġc Ġelse Ġhidden String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMask ing Type . FULL _ ADDRESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregex String Ġ= Ġ""" (( ([ ê°Ģ - íŀ £ ]+ ( ìĭľ | ëıĦ )| ))( Ġ| )[ ê°Ģ - íŀ £ ]+ ( ìĭľ | êµ ° | êµ¬ ))( Ġ) """. to Regex () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġregex String . find ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġmatch ?. range ?. last Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġstr . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ<= Ġlast Ġ|| Ġthis [ index ] Ġ== Ġ' Ġ' Ġ-> Ġmask ing Ġ+= Ġthis [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmask ing Ġ+= Ġhidden String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMask ing Type . ADDRESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġstr . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask ing Ġ+= Ġhidden String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMask ing Type . ACCOUNT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr . forEach Indexed Ġ{ Ġi , Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask ing Ġ+= Ġif Ġ( i Ġ< Ġstr . length Ġ- Ġ 5 ) Ġc Ġelse Ġhidden String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMask ing Type . PHONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr . forEach Indexed Ġ{ Ġi , Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask ing Ġ+= Ġif Ġ( i Ġ< Ġ 4 ) Ġc Ġelse Ġhidden String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMask ing Type . HOME _ PHONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmask ing Ġ+= Ġstr . substring ( 0 , Ġstr . length Ġ- Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask ing Ġ+= Ġhidden String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMask ing Type . ZIP _ CODE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr . forEach Indexed Ġ{ Ġindex , Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask ing Ġ+= Ġif Ġ( index Ġin Ġ 0 .. 1 ) Ġc Ġelse Ġhidden String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMask ing Type . EMAIL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsplit Index Ġ= Ġstr . indexOf ("@ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr . forEach Indexed Ġ{ Ġi , Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmask ing Ġ+= Ġif Ġ( i Ġ< Ġ 2 Ġ|| Ġi Ġ>= Ġsplit Index ) Ġc Ġelse Ġhidden String ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġmask ing Ċ } Ċ Ċ fun Ġget Base And Counter ( currency Pair : ĠString ): ĠPair < String , ĠString > Ġ{ ĊĠĠĠ Ġval Ġsplit String Ġ= Ġcurrency Pair . split ("_ ") ĊĠĠĠ Ġval Ġbase Ġ= Ġsplit String [ 0 ] ĊĠĠĠ Ġval Ġcounter Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġsplit String [ 1 ] ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġbase Ġto Ġcounter Ċ } Ċ Ċ fun Ġget Currency Pair ( base : ĠString , Ġcounter : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ"${ base . toLowerCase ( Locale . ROOT )} _${ counter . toLowerCase ( Locale . ROOT )}" Ċ } Ċ Ċ fun Ġget Formatted PhoneNumber ( before : ĠString , Ġafter : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( after Ġ< Ġbefore Ġ|| Ġafter . length Ġ< Ġ 1 3 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Formatted String ( before , Ġafter , Ġ 3 , Ġ 6 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Formatted String ( before , Ġafter , Ġ 3 , Ġ 7 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġget Formatted Date OfBirth ( before : ĠString , Ġafter : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġget Formatted String ( before , Ġafter , Ġ 4 , Ġ 6 ) Ċ } Ċ Ċ fun Ġget Formatted Id Card Number ( before : ĠString , Ġafter : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġget Formatted String ( before , Ġafter , Ġ 6 , Ġ 1 4 ) Ċ } Ċ Ċ fun Ġget Formatted Drive License Number ( before : ĠString , Ġafter : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġget Formatted String ( before , Ġafter , Ġ 2 , Ġ 4 , Ġ 1 0 ) Ċ } Ċ Ċ fun Ġget Formatted String ( before : ĠString , Ġafter : ĠString , Ġfirst Split Index : ĠInt , Ġsecond Split Index : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġval Ġresult Text : ĠString ĊĠĠĠ Ġif Ġ( before Ġ> Ġafter Ġ&& Ġbefore . endsWith ("- ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Text Ġ= Ġafter . substring ( 0 , Ġafter . length Ġ- Ġ 1 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġun Formatted Text Ġ= Ġafter . replace ("- ", Ġ"") ĊĠĠĠĠĠĠĠ Ġresult Text Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun Formatted Text . length Ġ>= Ġsecond Split Index Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġun Formatted Text . substring ( 0 , Ġfirst Split Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġun Formatted Text . substring ( first Split Index , Ġsecond Split Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthird Ġ= Ġun Formatted Text . substring ( second Split Index , Ġun Formatted Text . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ first }-${ second }-${ third }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun Formatted Text . length Ġ>= Ġfirst Split Index Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġun Formatted Text . substring ( 0 , Ġfirst Split Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġun Formatted Text . substring ( first Split Index , Ġmin ( un Formatted Text . length , Ġsecond Split Index )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ first }-${ second }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġun Formatted Text . substring ( 0 , Ġmin ( un Formatted Text . length , Ġfirst Split Index )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Text Ċ } Ċ Ċ fun Ġget Formatted String ( before : ĠString , Ġafter : ĠString , Ġfirst Split Index : ĠInt , Ġsecond Split Index : ĠInt , Ġthird Split Index : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġval Ġresult Text : ĠString ĊĠĠĠ Ġif Ġ( before Ġ> Ġafter Ġ&& Ġbefore . endsWith ("- ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġresult Text Ġ= Ġafter . substring ( 0 , Ġafter . length Ġ- Ġ 1 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġun Formatted Text Ġ= Ġafter . replace ("- ", Ġ"") ĊĠĠĠĠĠĠĠ Ġresult Text Ġ= Ġwhen Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġun Formatted Text . length Ġ>= Ġthird Split Index Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġun Formatted Text . substring ( 0 , Ġfirst Split Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġun Formatted Text . substring ( first Split Index , Ġsecond Split Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthird Ġ= Ġun Formatted Text . substring ( second Split Index , Ġthird Split Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfourth Ġ= Ġun Formatted Text . substring ( third Split Index , Ġun Formatted Text . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ first }-${ second }-${ third }-${ four th }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġun Formatted Text . length Ġ>= Ġsecond Split Index Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġun Formatted Text . substring ( 0 , Ġfirst Split Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġun Formatted Text . substring ( first Split Index , Ġsecond Split Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthird Ġ= Ġun Formatted Text . substring ( second Split Index , Ġun Formatted Text . length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ first }-${ second }-${ third }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġun Formatted Text . length Ġ>= Ġfirst Split Index Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġun Formatted Text . substring ( 0 , Ġfirst Split Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġun Formatted Text . substring ( first Split Index , Ġmin ( un Formatted Text . length , Ġsecond Split Index )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ first }-${ second }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġun Formatted Text . substring ( 0 , Ġmin ( un Formatted Text . length , Ġfirst Split Index )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Text Ċ } Ċ