/* Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠCopyright Ġ 2 0 2 1 ĠHyper De vs Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . hyper devs . arch _ example . utils . extensions Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġnew Ġstring Ġobtained Ġby Ġreplacing Ġthe Ġlast Ġoccurrence Ġof Ġthe Ġ[ oldValue ] Ġsubstring Ġin Ġthis Ġstring Ċ Ġ* Ġwith Ġthe Ġspecified Ġ[ newValue ] Ġstring . Ċ Ġ*/ Ċ fun ĠString . replace Last ( oldValue : ĠString , ĠnewValue : ĠString , Ġignore Case : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠ Ġval Ġindex Ġ= Ġlast IndexOf ( oldValue , Ġignore Case Ġ= Ġignore Case ) ĊĠĠĠ Ġreturn Ġif Ġ( index Ġ< Ġ 0 ) Ġthis Ġelse Ġthis . replace Range ( index , Ġindex Ġ+ ĠoldValue . length , ĠnewValue ) Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġ[ numberOf Letters ] Ġletters Ġfrom Ġthis Ġ[ String ], Ġby Ġobtaining Ġthe Ġfirst Ġletter Ġof Ġeach Ġword . Ċ Ġ* ĠEx : Ġ" B ey on c Ã© ĠK now les ĠCar ter " Ġ-> Ġ" BK " Ċ Ġ* ĠEx : Ġ" bey once . know les " Ġ-> ĠB Ċ Ġ*/ Ċ fun ĠString . initial Letters ( numberOf Letters : ĠInt Ġ= Ġ 2 ) Ġ= ĊĠĠĠ Ġthis . take If Ġ{ Ġit . isNotBlank () Ġ} ĊĠĠĠĠĠĠĠ Ġ? . trim () ĊĠĠĠĠĠĠĠ Ġ? . split (" Ġ") ĊĠĠĠĠĠĠĠ Ġ? . map Ġ{ Ġit . first OrNull () Ġ} ĊĠĠĠĠĠĠĠ Ġ? . join ToString ( separator Ġ= Ġ"") ĊĠĠĠĠĠĠĠ Ġ? . take ( numberOf Letters ) ĊĠĠĠĠĠĠĠ Ġ? . uppercase () Ċ Ċ /** Ċ Ġ* ĠSplit Ġthis Ġ[ String ] Ġin Ġto Ġa Ġlist Ġof Ġits Ġwords . Ċ Ġ*/ Ċ fun ĠString . split Words (): ĠList < String > Ġ= Ġif Ġ( isBlank ()) Ġempty List () Ġelse Ġtrim (). split ("\\ s +". to Regex ()) Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġnumber Ġof Ġwords Ġfrom Ġthis Ġ[ String ]. Ċ Ġ*/ Ċ fun ĠString . words Count (): ĠInt Ġ= Ġsplit Words (). size Ċ Ċ /** Ċ Ġ* ĠReturn Ġall Ġthe Ġindexes Ġof Ġthe Ġgiven Ġ[ sub String ] Ġoccurrences Ġin Ġthis ĠString . Ċ Ġ*/ Ċ fun ĠString . indexes Of ( sub String : ĠString , Ġignore Case : ĠBoolean Ġ= Ġtrue ): ĠList < Int > Ġ= ĊĠĠĠ Ġif Ġ( isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġif Ġ( ignore Case ) ĠRegex ( sub String , ĠRegex Option . IGNORE _ CASE ) Ġelse ĠRegex ( sub String ) ĊĠĠĠĠĠĠĠ Ġregex . findAll ( this ). map Ġ{ Ġit . range . first Ġ}. toList () ĊĠĠĠ Ġ} Ċ