package Ġsz . api . tools Ċ Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . time . Zone Offset Ċ Ċ // Ċ // ĠCreated Ġby Ġkk Ġon Ġ 2 0 2 0 / 5 / 2 . Ċ // Ċ Ċ fun ĠString ?. escape Markdown (): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( this . isNull Or Blank ()) Ġreturn Ġ"" ĊĠĠĠ Ġreturn Ġthis . replace ("_ ", Ġ""" \_ "" "). replace ("* ", Ġ""" \* """) Ċ } Ċ Ċ /** Ċ Ġ* ĠChanges ĠCamel Case Ġstring Ġto Ġlower Ġcase Ġwords Ġseparated Ġby Ġprovided Ċ Ġ* Ġseparator Ġcharacter . ĠThe Ġfollowing Ġtranslations Ġare Ġapplied : Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠEvery Ġupper Ġcase Ġletter Ġin Ġthe ĠCamel Case Ġname Ġis Ġtranslated Ġinto Ċ Ġ* Ġtwo Ġcharacters , Ġa Ġseparator Ġand Ġthe Ġlower Ġcase Ġequivalent Ġof Ġthe Ġtarget Ġcharacter , Ċ Ġ* Ġwith Ġthree Ġexceptions . Ċ Ġ* ĠĠ 1 . ĠFor Ġcontiguous Ġsequences Ġof Ġupper Ġcase Ġletters , Ġcharacters Ġafter Ġthe Ġfirst Ċ Ġ* Ġcharacter Ġare Ġreplaced Ġonly Ġby Ġtheir Ġlower Ġcase Ġequivalent , Ġand Ġare Ġnot Ċ Ġ* Ġprece ded Ġby Ġa Ġseparator Ġ(` the FOO ` Ġto Ġ` the _ foo `). Ċ Ġ* ĠĠ 1 . ĠAn Ġupper Ġcase Ġcharacter Ġin Ġthe Ġfirst Ġposition Ġof Ġthe ĠCamel Case Ġname Ċ Ġ* Ġis Ġnot Ġprece ded Ġby Ġa Ġseparator Ġcharacter , Ġand Ġis Ġtranslated Ġonly Ġto Ġits Ċ Ġ* Ġlower Ġcase Ġequivalent . Ġ(` Foo ` Ġto Ġ` foo ` Ġand Ġnot Ġ`_ foo `) Ċ Ġ* ĠĠ 1 . ĠAn Ġupper Ġcase Ġcharacter Ġin Ġthe ĠCamel Case Ġname Ġthat Ġis Ġalready Ġprece ded Ċ Ġ* Ġby Ġa Ġseparator Ġcharacter Ġis Ġtranslated Ġonly Ġto Ġits Ġlower Ġcase Ġequivalent , Ċ Ġ* Ġand Ġis Ġnot Ġprece ded Ġby Ġan Ġadditional Ġseparator . Ġ(` user _ Name ` Ċ Ġ* Ġto Ġ` user _ name ` Ġand Ġnot Ġ` user __ name `. Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠIf Ġthe ĠCamel Case Ġname Ġstarts Ġwith Ġa Ġseparator , Ġthen Ġthat Ċ Ġ* Ġseparator Ġis Ġnot Ġincluded Ġin Ġthe Ġtranslated Ġname , Ġunless Ġthe ĠCamel Case Ċ Ġ* Ġname Ġis Ġjust Ġone Ġcharacter Ġin Ġlength , Ġi . e ., Ġit Ġis Ġthe Ġseparator Ġcharacter . Ċ Ġ* ĠThis Ġapplies Ġonly Ġto Ġthe Ġfirst Ġcharacter Ġof Ġthe ĠCamel Case Ġname . Ċ Ġ* Ċ Ġ*/ Ċ fun ĠString . camel Case To Low Case Se pr ated ( separator : ĠChar ): ĠString Ġ{ ĊĠĠĠ Ġval Ġlength Ġ= Ġthis . length ĊĠĠĠ Ġval Ġresult Ġ= ĠStringBuilder ( length Ġ* Ġ 2 ) ĊĠĠĠ Ġvar Ġresult Length Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġprev Translated Ġ= Ġfalse ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġthis [ i ] ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ> Ġ 0 Ġ|| Ġc Ġ!= Ġseparator ) Ġ{// Ġskip Ġfirst Ġstarting Ġseparator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Character . is UpperCase ( c )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! prev Translated Ġ&& Ġresult Length Ġ> Ġ 0 Ġ&& Ġresult [ result Length Ġ- Ġ 1 ] Ġ!= Ġseparator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( separator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Length ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= ĠCharacter . toLowerCase ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Translated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Translated Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Length ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( result Length Ġ> Ġ 0 ) Ġresult . toString () Ġelse Ġthis Ċ } Ċ Ċ /** Ċ Ġ* ĠConverts Ġseparated Ġstring Ġvalue Ġto ĠCamel Case . Ċ Ġ*/ Ċ fun ĠString . to Camel Case ( first Char Upper case : ĠBoolean , Ġseparator : ĠChar ): ĠString Ġ{ ĊĠĠĠ Ġval Ġobj Str Ġ= Ġthis . trim Start ( separator ) ĊĠĠĠ Ġval Ġlength Ġ= Ġobj Str . length ĊĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder ( length ) ĊĠĠĠ Ġvar Ġupper Case Ġ= Ġfirst Char Upper case ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġch Ġ= Ġobj Str [ i ] ĊĠĠĠĠĠĠĠ Ġif Ġ( ch Ġ== Ġseparator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupper Case Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( upper Case ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( Character . toUpperCase ( ch )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupper Case Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( ch ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġsb . toString () Ċ } Ċ Ċ /** Ċ Ġ* Ġ ä¸ºäºĨ æĿ¡ä»¶ åĪ¤æĸŃ æĹ¶ , Ġ è®© ä»£çłģ è¯Ń ä¹ī æĽ´ åĬł çĽ´ è§Ĥ , Ġ å¢ŀåĬł çļĦ æī©å±ķ æĸ¹æ³ķ Ċ Ġ*/ Ċ fun ĠBoolean . failed (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis . not () Ċ } Ċ Ċ /** Ċ Ġ* Ġ ä¸ºäºĨ æĿ¡ä»¶ åĪ¤æĸŃ æĹ¶ , Ġ è®© ä»£çłģ è¯Ń ä¹ī æĽ´ åĬł çĽ´ è§Ĥ , Ġ å¢ŀåĬł çļĦ æī©å±ķ æĸ¹æ³ķ Ċ Ġ*/ Ċ fun ĠBoolean . suc ceed (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis Ċ } Ċ Ċ fun ĠLocalDateTime . to Epoch Ms ( zone Offset : ĠZone Offset Ġ= ĠZone . system Zone Offset ): ĠLong Ġ{ ĊĠĠĠ Ġreturn Ġthis . to Instant ( zone Offset ). to Epoch Milli () Ċ } Ċ Ċ fun Ġepoch Ms To LocalDateTime ( epoch Ms : ĠLong , Ġzone Offset : ĠZone Offset Ġ= ĠZone . system Zone Offset ): ĠLocalDateTime Ġ{ ĊĠĠĠ Ġreturn ĠLocalDateTime . of Instant ( Instant . of Epoch Milli ( epoch Ms ), Ġzone Offset ) Ċ } Ċ Ċ object ĠZone Ġ{ ĊĠĠĠ Ġval Ġsystem Zone Offset : ĠZone Offset Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠOffset DateTime . now (). offset ĊĠĠĠ Ġ} Ċ }