package Ġcom . s ult an . utils . string utils Ċ Ċ import Ġjava . util . regex . Pattern Ċ Ċ open Ġclass ĠStringUtils Ġ{ ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* Ġreturn Ġtrue Ġif Ġthe Ġvalue Ġpassed Ġis Ġnull Ġor Ġempty ĊĠĠĠ Ġ* Ġ@ param Ġstring Ġ: Ġvalue Ġof Ġstring Ġpassed ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġis Null OrEmpty ( string : ĠString ?) Ġ= Ġstring ?. equals ("") Ġ?: Ġtrue ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* Ġreturn Ġtrue Ġif Ġthe Ġvalue Ġpassed Ġis Ġneither Ġnull Ġnor Ġempty ĊĠĠĠ Ġ* Ġ@ param Ġstring Ġ: Ġvalue Ġof Ġstring Ġpassed ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġis NotNull or Empty ( string : ĠString ?) Ġ= Ġstring ?. let Ġ{ Ġit Ġ-> Ġ! it . equals ("") Ġ} Ġ?: Ġfalse ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* Ġreturn Ġtrue Ġif Ġthe Ġvalue Ġpassed Ġin Ġparameters Ġare Ġequal Ġin Ġcase Ġsensitive Ġmanner ĊĠĠĠ Ġ* Ġ@ param Ġstring 1 : Ġfirst Ġstring Ġvalue ĊĠĠĠ Ġ* Ġ@ param Ġstring 2 : Ġsecond Ġstring Ġvalue ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġare Equal ( string 1 : ĠString ?, Ġstring 2 : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsafe Let ( string 1 , Ġstring 2 ) Ġ{ Ġstring 1 , Ġstring 2 Ġ-> Ġstring 1 . equals ( string 2 ) Ġ} Ġ?: Ġfalse ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ* Ġreturn Ġtrue Ġif Ġthe Ġvalue Ġpassed Ġin Ġparameters Ġare Ġequal Ġin Ġnon Ġcase Ġsensitive Ġmanner ĊĠĠĠ Ġ* Ġ@ param Ġstring 1 : Ġfirst Ġstring Ġvalue ĊĠĠĠ Ġ* Ġ@ param Ġstring 2 : Ġsecond Ġstring Ġvalue ĊĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġare Equal IgnoreCase ( string 1 : ĠString ?, Ġstring 2 : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsafe Let ( string 1 , Ġstring 2 ) Ġ{ Ġstring 1 , Ġstring 2 Ġ-> Ġstring 1 . isEqual IgnoreCase ( string 2 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġfalse ĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġtrue Ġif Ġthe Ġvalue Ġpassed Ġin Ġparameter Ġhas Ġsame Ġpattern Ġas Ġandroid Ġemail Ġp atter ĊĠĠ Ġ* Ġ@ param Ġemail : Ġemail Ġvalue ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun ĠisValid Email ( email : ĠString ?) Ġ= Ġemail ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġget Email Pattern (). matcher ( it ). matches () ĊĠĠĠ Ġ} Ġ?: Ġfalse ĊĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġtrue Ġif Ġthe Ġvalue Ġpassed Ġin Ġparameter Ġhas Ġsame Ġpattern Ġas Ġandroid ĠWEB _ URL Ġp atter ĊĠĠ Ġ* Ġ@ param Ġweb Url : Ġemail Ġvalue ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun ĠisValid Url ( web Url : ĠString ?) Ġ= Ġweb Url ?. let Ġ{ Ġget Web Url Pattern (). matcher ( it ). matches () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġfalse ĊĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġtrue Ġif Ġthe Ġvalue Ġpassed Ġin Ġparameter Ġhas Ġsame Ġpattern Ġpassed Ġin Ġsecond Ġparameter ĊĠĠ Ġ* Ġ@ param Ġstring : Ġemail Ġvalue ĊĠĠ Ġ* Ġ@ param Ġpattern : Ġpattern Ġpassed ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġhas Valid Pattern ( string : ĠString ?, Ġpattern : ĠPattern ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsafe Let ( string , Ġpattern ) Ġ{ Ġs , Ġp Ġ-> Ġp . matcher ( s ). matches () Ġ} Ġ?: Ġfalse ĊĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġlist Ġof Ġstring Ġwhen Ġa Ġcomma Ġseper ated ĠString Ġis Ġpassed ĊĠĠ Ġ* Ġ@ param Ġstring : Ġcomma Ġseper ated ĠString ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġconvert Comma Se per ated String ToList ( string : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconvert Char Se per ated String ToList ( string , Ġ', ') ĊĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġlist Ġof Ġstring Ġwhen Ġa Ġdelimiter Ġseper ated ĠString Ġis Ġpassed ĊĠĠ Ġ* Ġ@ param Ġstring : Ġdelimiter Ġseper ated ĠString ĊĠĠ Ġ* Ġ@ param Ġchar : Ġdelimiter Ġcharacter ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġconvert Char Se per ated String ToList ( string : ĠString ?, Ġchar : ĠChar ?): ĠArrayList < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsafe Let With EmptyString ( string , Ġchar ) Ġ{ Ġs , Ġc Ġ-> Ġremove ( s , Ġ" Ġ") ?. split ( c ) Ġ} Ġas ĠArrayList < String >? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠArrayList () ĊĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġdelimiter Ġseper ated ĠString Ġwhen Ġlist Ġof Ġstring Ġis Ġpassed ĊĠĠ Ġ* Ġ@ param Ġstring List : Ġlist Ġof Ġstring ĊĠĠ Ġ* Ġ@ param Ġchar : Ġdelimiter Ġcharacter ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġconvert String List To Comma Se per ated String ( string List : ĠList < String > ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconvert String List To Char Se per ated String ( string List , Ġ', ') ĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġdelimiter Ġseper ated ĠString Ġwhen Ġlist Ġof Ġstring Ġis Ġpassed ĊĠĠ Ġ* Ġ@ param Ġstring List : Ġlist Ġof Ġstring ĊĠĠ Ġ* Ġ@ param Ġchar : Ġdelimiter Ġcharacter ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġconvert String List To Char Se per ated String ( string List : ĠList < String > ?, Ġchar : ĠChar ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsafe Let ( string List , Ġchar ) Ġ{ Ġs , Ġc Ġ-> Ġs . join ToString ( separator Ġ= Ġc . toString (), Ġlimit Ġ= Ġs . size ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ"" ĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġcapital ize Ġform Ġof Ġthe Ġstring Ġpassed Ġin Ġparameter ĊĠĠ Ġ* Ġ@ param Ġstring : Ġstring ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġcapital ize ( string : ĠString ?) Ġ= Ġstring ?. capitalize () ĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġcapital ize Ġform Ġof Ġthe Ġstring Ġpassed Ġin Ġparameter ĊĠĠ Ġ* Ġ@ param Ġstring : Ġstring ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġde Capital ize ( string : ĠString ?) Ġ= Ġstring ?. de capitalize () ĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġlowercase Ġform Ġof Ġthe Ġstring Ġpassed Ġin Ġparameter ĊĠĠ Ġ* Ġ@ param Ġstring : Ġstring ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġlower Case ( string : ĠString ?) Ġ= Ġstring ?. toLowerCase () ĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġreturn Ġuppercase Ġform Ġof Ġthe Ġstring Ġpassed Ġin Ġparameter ĊĠĠ Ġ* Ġ@ param Ġstring : Ġstring ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġupper Case ( string : ĠString ?) Ġ= Ġstring ?. toUpperCase () ĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġtake Ġstring Ġand Ġprefix Ġas Ġinput Ġand Ġremove Ġprefix Ġif Ġit Ġis Ġpresent ĊĠĠ Ġ* Ġ@ param Ġstring : Ġstring Ġto Ġremove Ġprefix ĊĠĠ Ġ* Ġ@ param Ġprefix : Ġto Ġremove Ġfrom Ġstring ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġremove Prefix ( string : ĠString ?, Ġprefix : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsafe Let With One Null And EmptyString ( string ) Ġ{ Ġs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefix ?. let Ġ{ Ġs ?. remove Prefix ( it ) Ġ} Ġ?: Ġs ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġtake Ġmain Ġstring Ġand Ġsubstring Ġas Ġinput Ġand Ġremove Ġsubstring Ġif Ġit Ġis Ġpresent ĊĠĠ Ġ* Ġ@ param Ġstring : Ġstring Ġto Ġremove Ġprefix ĊĠĠ Ġ* Ġ@ param Ġprefix : Ġto Ġremove Ġfrom Ġstring ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġremove ( string : ĠString ?, Ġto Remove : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsafe Let With One Null And EmptyString ( string ) Ġ{ Ġmain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Remove ?. let Ġ{ Ġmain ?. replace ( it , Ġ"") Ġ} Ġ?: Ġmain ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠ Ġ* Ġtake Ġmain Ġstring Ġand Ġsuffix Ġas Ġinput Ġand Ġremove Ġsuffix Ġif Ġit Ġis Ġpresent ĊĠĠ Ġ* Ġ@ param Ġstring : Ġstring Ġto Ġremove Ġprefix ĊĠĠ Ġ* Ġ@ param Ġprefix : Ġto Ġremove Ġfrom Ġstring ĊĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġremove Suffix ( string : ĠString ?, Ġsuffix : ĠString ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsafe Let With One Null And EmptyString ( string ) Ġ{ Ġstr Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuffix ?. let Ġ{ Ġstr ?. remove Suffix ( it ) Ġ} Ġ?: Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġopen Ġfun Ġget Email Pattern () Ġ= Ġandroid . util . Patterns . EMAIL _ ADDRESS ĊĠĠĠ Ġopen Ġfun Ġget Web Url Pattern () Ġ= Ġandroid . util . Patterns . WEB _ URL Ċ } Ċ Ċ /* ĊĠ Ġ* Ġkotlin Ġextension Ġfunction ĊĠ Ġ* Ġreturn Ġtrue Ġif Ġthe Ġvalue Ġpassed Ġin Ġparameter Ġis Ġequal Ġto Ġmy Ġstring Ġin Ġcase Ġsensitive Ġmanner ĊĠ Ġ* Ġ@ param Ġstring : Ġfirst Ġstring Ġvalue ĊĠ Ġ* Ġ*/ Ċ public Ġfun ĠString ?. isEqual ( string : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġsafe Let ( this , Ġstring ) Ġ{ Ġa , Ġb Ġ-> Ġa . equals ( b ) Ġ} Ġ?: Ġfalse Ċ } Ċ Ċ /* ĊĠ Ġ* Ġkotlin Ġextension Ġfunction ĊĠ Ġ* Ġreturn Ġtrue Ġif Ġthe Ġvalue Ġpassed Ġin Ġparameter Ġis Ġequal Ġto Ġmy Ġstring Ġin Ġnon Ġcase Ġsensitive Ġmanner ĊĠ Ġ* Ġ@ param Ġstring : Ġfirst Ġstring Ġvalue ĊĠ Ġ* Ġ*/ Ċ fun ĠString ?. isEqual IgnoreCase ( string : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġsafe Let ( this , Ġstring ) Ġ{ Ġa , Ġb Ġ-> Ġa . toLowerCase (). equals ( b . toLowerCase ()) Ġ} Ġ?: Ġfalse Ċ } Ċ Ċ fun ĠString ?. convert ToInt ( default : ĠInt Ġ= Ġ 0 ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġthis ?. toInt OrNull () Ġ?: Ġdefault Ċ } Ċ Ċ fun ĠString ?. convertTo Double ( default : ĠDouble Ġ= Ġ 0 . 0 ): ĠDouble Ġ{ ĊĠĠĠ Ġreturn Ġthis ?. toDouble OrNull () Ġ?: Ġdefault Ċ } Ċ Ċ fun ĠString ?. convertTo Long ( default : ĠLong Ġ= Ġ 0 L ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġthis ?. to Long OrNull () Ġ?: Ġdefault Ċ } Ċ Ċ fun ĠString ?. convertTo Boolean ( default : ĠBoolean Ġ= Ġfalse ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis ?. to Boolean () Ġ?: Ġdefault Ċ } Ċ Ċ private Ġfun Ġ< T 1 Ġ: ĠAny , ĠT 2 Ġ: ĠAny , ĠR Ġ: ĠAny > Ġsafe Let ( p 1 : ĠT 1 ?, Ġp 2 : ĠT 2 ?, Ġblock : Ġ( T 1 , ĠT 2 ) Ġ-> ĠR ?): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( p 1 Ġ!= Ġnull Ġ&& Ġp 2 Ġ!= Ġnull ) Ġblock ( p 1 , Ġp 2 ) Ġelse Ġnull Ċ } Ċ Ċ private Ġfun Ġ< T 1 Ġ: ĠString ?, ĠT 2 Ġ: ĠAny , ĠR Ġ: ĠAny > Ġsafe Let With EmptyString ( p 1 : ĠT 1 , Ġp 2 : ĠT 2 ?, Ġblock : Ġ( T 1 , ĠT 2 ) Ġ-> ĠR ?): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( p 1 Ġ!= Ġnull Ġ&& Ġp 2 Ġ!= Ġnull Ġ&& Ġp 1 . isNotEmpty ()) Ġblock ( p 1 , Ġp 2 ) Ġelse Ġnull Ċ } Ċ Ċ private Ġfun Ġ< T 1 Ġ: ĠString ?, ĠR Ġ: ĠAny > Ġsafe Let With One Null And EmptyString ( p 1 : ĠT 1 , Ġblock : Ġ( T 1 ) Ġ-> ĠR ?): ĠR ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( p 1 Ġ!= Ġnull Ġ&& Ġp 1 . isNotEmpty ()) Ġblock ( p 1 ) Ġelse Ġnull Ċ } ĊĊĊ