package Ġdev . ent ao . k ava . base Ċ Ċ import Ġjava . net . URL Decoder Ċ import Ġjava . net . URL Encoder Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġent ao yang @ 1 6 3 . com Ġon Ġ 1 6 / 5 / 1 3 . Ċ Ġ*/ Ċ // æķ°åŃĹ a - zA - Z åĴĮ _ Ċ val ĠREG _ ID Ġ= Ġ"\\ w +" Ċ // 1 1 ä½į æķ°åŃĹ , Ġ 1 å¼Ģ å¤´ Ċ val ĠREG _ PHONE Ġ= Ġ" 1 \\ d { 1 0 }" Ċ // abc . xyz . 1 2 3 @ 4 5 6 . opq . com . cn Ċ val ĠREG _ EMAIL Ġ= Ġ"^ (\\ w )+( \\. \\ w + )* @( \\ w )+ (( \\. \\ w + )+ )$ " Ċ // 0 - 9 Ċ val ĠREG _ INTEGER Ġ= Ġ"\\ d +" Ċ // 0 - 9 åĴĮ . Ċ val ĠREG _ FLOAT Ġ= Ġ"[ .\\ d ] +" ĊĊ Ċ fun ĠFloat . max Fraction ( n : ĠInt ): ĠString Ġ{ Ċ ĉ return Ġthis . toDouble (). max Fraction ( n ) Ċ } Ċ Ċ fun ĠDouble . max Fraction ( n : ĠInt ): ĠString Ġ{ Ċ ĉ if Ġ( n Ġ<= Ġ 0 ) Ġ{ Ċĉ ĉ return Ġthis . to Long (). toString () Ċ ĉ } Ċ ĉ val Ġf Ġ= ĠDecimal Format () Ċ ĉ f . maximum Fraction Digits Ġ= Ġn Ċ ĉ f . is Grouping Used Ġ= Ġfalse Ċ ĉ return Ġf . format ( this ) Ċ } Ċ Ċ fun ĠString . match Ip 4 (): ĠBoolean Ġ{ Ċ ĉ return Ġthis . matches (""" [\ d ]{ 1 , 3 }\ . [\ d ]{ 1 , 3 }\ . [\ d ]{ 1 , 3 }\ . [\ d ]{ 1 , 3 } """. to Regex ()) Ċ } Ċ Ċ fun ĠString . replace Chars ( var arg Ġchar ValuePair : ĠPair < Char , ĠString >): ĠString Ġ{ Ċ ĉ val Ġsb Ġ= ĠStringBuilder ( this . length Ġ+ Ġ 8 ) Ċ ĉ for Ġ( ch Ġin Ġthis ) Ġ{ Ċĉ ĉ val Ġp Ġ= Ġchar ValuePair . find Ġ{ Ġit . first Ġ== Ġch Ġ} Ċĉ ĉ if Ġ( p Ġ!= Ġnull ) Ġ{ Ċĉĉ ĉ sb . append ( p . second ) Ċĉ ĉ } Ġelse Ġ{ Ċĉĉ ĉ sb . append ( ch ) Ċĉ ĉ } Ċ ĉ } Ċ ĉ return Ġsb . toString () Ċ } Ċ Ċ // """ Ċ // ĉ ĉ fun Ġok (){ Ċ // ĉĉ ĉ print (" hello "); Ċ // ĉ ĉ } Ċ // """ Ċ // ==> Ċ // """ fun Ġok (){ Ċ // ĉ print (" hello "); Ċ //} """ Ċ fun ĠString . trim Columns ( tab Size : ĠInt Ġ= Ġ 4 ): ĠString Ġ{ Ċ ĉ val Ġlines Ġ= Ġthis . lines () Ċ ĉ var Ġn Ġ= Ġ 1 0 0 0 Ċ ĉ for Ġ( line Ġin Ġlines ) Ġ{ Ċĉ ĉ if Ġ( line . trim (). isEmpty ()) Ġ{ Ċĉĉ ĉ continue Ċĉ ĉ } Ċĉ ĉ var Ġw Ġ= Ġ 0 Ċĉ ĉ for Ġ( c Ġin Ġline ) Ġ{ Ċĉĉ ĉ if Ġ( c Ġ== Ġ' Ġ') Ġ{ Ċĉĉĉ ĉ w Ġ+= Ġ 1 Ċĉĉ ĉ } Ġelse Ġif Ġ( c Ġ== Ġ'\ t ') Ġ{ Ċĉĉĉ ĉ w Ġ+= Ġtab Size Ċĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉ ĉ break Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ n Ġ= Ġkotlin . math . min ( n , Ġw ) Ċ ĉ } Ċ ĉ val Ġls Ġ= ĠArrayList < String >() Ċ ĉ for Ġ( line Ġin Ġlines ) Ġ{ Ċĉ ĉ var Ġw Ġ= Ġ 0 Ċĉ ĉ var Ġindex Ġ= Ġ 0 Ċĉ ĉ for Ġ( c Ġin Ġline ) Ġ{ Ċĉĉ ĉ if Ġ( w Ġ>= Ġn ) Ġ{ Ċĉĉĉ ĉ break Ċĉĉ ĉ } Ċĉĉ ĉ ++ index Ċĉĉ ĉ if Ġ( c Ġ== Ġ' Ġ') Ġ{ Ċĉĉĉ ĉ w Ġ+= Ġ 1 Ċĉĉ ĉ } Ġelse Ġif Ġ( c Ġ== Ġ'\ t ') Ġ{ Ċĉĉĉ ĉ w Ġ+= Ġtab Size Ċĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉ ĉ break Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ ls Ġ+= Ġline . substring ( index ) Ċ ĉ } Ċ ĉ return Ġls . join ToString ("\ n ") Ċ } Ċ Ċ val ĠString . url Encoded : ĠString Ċ ĉ get () Ġ{ Ċĉ ĉ return ĠURL Encoder . encode ( this , ĠChar sets . UTF _ 8 . name ()) Ċ ĉ } Ċ val ĠString . url Decoded : ĠString Ċ ĉ get () Ġ{ Ċĉ ĉ return ĠURL Decoder . decode ( this , ĠChar sets . UTF _ 8 . name ()) Ċ ĉ } Ċ Ċ val ĠString . base 6 4 Decoded : ĠString Ċ ĉ get () Ġ{ Ċĉ ĉ if Ġ( this . isEmpty ()) Ġ{ Ċĉĉ ĉ return Ġ"" Ċĉ ĉ } Ċĉ ĉ val Ġba Ġ= ĠBase 6 4 . getUrl Decoder (). decode ( this ) Ċĉ ĉ return ĠString ( ba , ĠChar sets . UTF _ 8 ) Ċ ĉ } Ċ val ĠString . base 6 4 Encoded : ĠString Ċ ĉ get () Ġ{ Ċĉ ĉ if Ġ( this . isEmpty ()) Ġ{ Ċĉĉ ĉ return Ġ"" Ċĉ ĉ } Ċĉ ĉ return ĠBase 6 4 . getUrl Encoder (). encode ToString ( this . toByteArray ()) Ċ ĉ } Ċ Ċ fun ĠString . substr ( from : ĠInt , Ġsize : ĠInt ): ĠString Ġ{ Ċ ĉ val Ġa Ġ= Ġif Ġ( from Ġ>= Ġ 0 ) Ġ{ Ċĉ ĉ from Ċ ĉ } Ġelse Ġ 0 Ċ ĉ val Ġb Ġ= Ġif Ġ( a Ġ+ Ġsize Ġ< Ġthis . length ) Ġ{ Ċĉ ĉ a Ġ+ Ġsize Ċ ĉ } Ġelse Ġ{ Ċĉ ĉ this . length Ċ ĉ } Ċ ĉ return Ġthis . substring ( a , Ġb ) Ċ } Ċ Ċ // " abcd = def g - 1 2 3 ". substring Between (' = ','- ') Ġ=> Ġ" def g " Ċ // " abcd = def g = 1 2 3 ". substring Between (' = ','= ') Ġ=> Ġ" def g " Ċ // " abcd == 1 2 3 ". substring Between (' = ','= ') Ġ=> Ġ"" Ċ // " abcd = 1 2 3 ". substring Between (' = ','= ') Ġ=> Ġnull Ċ fun ĠString . substring Between ( a : ĠChar , Ġb : ĠChar ): ĠString ? Ġ{ Ċ ĉ val Ġn A Ġ= Ġthis . indexOf ( a ) Ċ ĉ if Ġ( nA Ġ>= Ġ 0 ) Ġ{ Ċĉ ĉ val Ġn B Ġ= Ġthis . indexOf ( b , Ġn A Ġ+ Ġ 1 ) Ċĉ ĉ if Ġ( nB Ġ>= Ġ 0 ) Ġ{ Ċĉĉ ĉ return Ġthis . substring ( nA Ġ+ Ġ 1 , Ġn B ) Ċĉ ĉ } Ċ ĉ } Ċ ĉ return Ġnull Ċ } Ċ Ċ fun ĠString ?. empty (): ĠBoolean Ġ{ Ċ ĉ return Ġthis Ġ== Ġnull Ġ|| Ġthis . length Ġ== Ġ 0 Ċ } Ċ Ċ fun ĠString ?. not Empty (): ĠBoolean Ġ{ Ċ ĉ return Ġthis Ġ!= Ġnull Ġ&& Ġthis . length Ġ> Ġ 0 Ċ } Ċ Ċ fun ĠString ?. empty Or ( s : ĠString ): ĠString Ġ{ Ċ ĉ return Ġif Ġ( this Ġ== Ġnull Ġ|| Ġthis . length Ġ== Ġ 0 ) Ġs Ġelse Ġthis Ċ } Ċ Ċ fun ĠString ?. null Or ( s : ĠString ): ĠString Ġ{ Ċ ĉ return Ġif Ġ( this Ġ== Ġnull ) Ġs Ġelse Ġthis Ċ } Ċ Ċ fun ĠString ?. has Char Last ( ch : ĠChar ): ĠBoolean Ġ{ Ċ ĉ return Ġ( this ?. lastIndexOf ( ch ) Ġ?: Ġ- 1 ) Ġ>= Ġ 0 Ċ } Ċ Ċ fun ĠString ?. has Char ( ch : ĠChar ): ĠBoolean Ġ{ Ċ ĉ return Ġ( this ?. indexOf ( ch ) Ġ?: Ġ- 1 ) Ġ>= Ġ 0 Ċ } Ċ Ċ fun ĠString . head ( n : ĠInt ): ĠString Ġ{ Ċ ĉ if Ġ( n Ġ<= Ġ 0 ) Ġ{ Ċĉ ĉ return Ġ"" Ċ ĉ } Ċ ĉ if Ġ( this . length Ġ<= Ġn ) Ġ{ Ċĉ ĉ return Ġthis Ċ ĉ } Ċ ĉ return Ġthis . substring ( 0 , Ġn ) Ċ } Ċ Ċ fun ĠString . tail ( n : ĠInt ): ĠString Ġ{ Ċ ĉ if Ġ( n Ġ<= Ġ 0 ) Ġ{ Ċĉ ĉ return Ġ"" Ċ ĉ } Ċ ĉ if Ġ( this . length Ġ< Ġn ) Ġ{ Ċĉ ĉ return Ġthis Ċ ĉ } Ċ ĉ return Ġthis . substring ( this . length Ġ- Ġn ) Ċ } Ċ Ċ // åĪĨ éļĶ æĪĲ éķ¿åº¦ ä¸į å¤§äºİ n çļĦ åŃĹç¬¦ä¸² æķ°ç»Ħ Ċ fun ĠString . tr uck ( n : ĠInt ): ĠList < String > Ġ{ Ċ ĉ val Ġls Ġ= ĠArrayList < String >() Ċ ĉ if Ġ( this . length Ġ<= Ġn ) Ġ{ Ċĉ ĉ ls . add ( this ) Ċ ĉ } Ġelse Ġ{ Ċĉ ĉ val Ġx Ġ= Ġthis . length Ġ/ Ġn Ċĉ ĉ val Ġy Ġ= Ġthis . length Ġ% Ġn Ċĉ ĉ for Ġ( i Ġin Ġ 1 .. x ) Ġ{ Ċĉĉ ĉ val Ġstart Ġ= Ġ( i Ġ- Ġ 1 ) Ġ* Ġn Ċĉĉ ĉ ls . add ( this . substring ( start , Ġstart Ġ+ Ġn )) Ċĉ ĉ } Ċĉ ĉ if Ġ( y Ġ!= Ġ 0 ) Ġ{ Ċĉĉ ĉ ls . add ( this . substring ( x Ġ* Ġn )) Ċĉ ĉ } Ċ ĉ } Ċ ĉ return Ġls Ċ } Ċ Ċ fun ĠString . escape Html (): ĠString Ġ{ Ċ ĉ val Ġsb Ġ= ĠStringBuffer (( this . length Ġ* Ġ 1 . 1 ). toInt ()) Ċ ĉ this . forEach Ġ{ Ċĉ ĉ when Ġ( it ) Ġ{ Ċĉĉ ĉ ' <' Ġ-> Ġsb . append ("& lt ; ") Ċĉĉ ĉ '> ' Ġ-> Ġsb . append ("& gt ; ") Ċĉĉ ĉ '" ' Ġ-> Ġsb . append ("& quot ; ") Ċĉĉ ĉ '\ '' Ġ-> Ġsb . append (" &# x 2 7 ; ") Ċĉĉ ĉ '& ' Ġ-> Ġsb . append ("& amp ; ") Ċĉĉ ĉ ' /' Ġ-> Ġsb . append (" &# x 2 F ; ") Ċĉĉ ĉ else Ġ-> Ġsb . append ( it ) Ċĉ ĉ } Ċ ĉ } Ċ ĉ return Ġsb . toString () Ċ } Ċ Ċ fun ĠString . escape Html ( for View : ĠBoolean ): ĠString Ġ{ Ċ ĉ if Ġ(! for View ) Ġ{ Ċĉ ĉ return Ġthis . escape Html () Ċ ĉ } Ċ ĉ val Ġsb Ġ= ĠStringBuffer (( this . length Ġ* Ġ 1 . 1 ). toInt ()) Ċ ĉ var Ġi Ġ= Ġ 0 Ċ ĉ val ĠCR Ġ= Ġ 1 3 . to Char () Ċ ĉ val ĠL F Ġ= Ġ 1 0 . to Char () Ċ ĉ val ĠSP Ġ= Ġ' Ġ' Ċ ĉ val ĠBR Ġ= Ġ"< br /> " Ċ ĉ while Ġ( i Ġ< Ġthis . length ) Ġ{ Ċĉ ĉ val Ġc Ġ= Ġthis [ i ] Ċĉ ĉ when Ġ( c ) Ġ{ Ċĉĉ ĉ ' <' Ġ-> Ġsb . append ("& lt ; ") Ċĉĉ ĉ '> ' Ġ-> Ġsb . append ("& gt ; ") Ċĉĉ ĉ '" ' Ġ-> Ġsb . append ("& quot ; ") Ċĉĉ ĉ '\ '' Ġ-> Ġsb . append (" &# x 2 7 ; ") Ċĉĉ ĉ '& ' Ġ-> Ġsb . append ("& amp ; ") Ċĉĉ ĉ ' /' Ġ-> Ġsb . append (" &# x 2 F ; ") Ċĉĉ ĉ SP Ġ-> Ġ{ Ċĉĉĉ ĉ sb . append ("& nbsp ; ") Ċĉĉ ĉ } Ċĉĉ ĉ CR Ġ-> Ġ{ Ċĉĉĉ ĉ val Ġnext Char : ĠChar ? Ġ= Ġif Ġ( i Ġ+ Ġ 1 Ġ< Ġthis . length ) Ġthis [ i Ġ+ Ġ 1 ] Ġelse Ġnull Ċĉĉĉ ĉ if Ġ( next Char Ġ!= ĠL F ) Ġ{ Ċĉĉĉĉ ĉ sb . append ( BR ) Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉĉ ĉ LF Ġ-> Ġ{ Ċĉĉĉ ĉ sb . append ( BR ) Ċĉĉ ĉ } Ċĉĉ ĉ else Ġ-> Ġsb . append ( c ) Ċĉ ĉ } Ċĉ ĉ ++ i Ċ ĉ } ĊĊ ĉ return Ġsb . toString () Ċ } Ċ Ċ val ĠString . lower Case d : ĠString Ċ ĉ get () Ġ{ Ċĉ ĉ return Ġthis . toLowerCase ( Locale . getDefault ()) Ċ ĉ } Ċ val ĠString . upper Case d : ĠString Ċ ĉ get () Ġ{ Ċĉ ĉ return Ġthis . toUpperCase ( Locale . getDefault ()) Ċ ĉ } Ċ