package Ġcom . pq ix ing . tools Ċ Ċ import Ġcom . pq ix ing . codec . digest . Digest Utils ĊĊ Ċ object ĠText Utils Ġ{ ĊĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĊĠĠĠ Ġval Ġonly Name : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"${ System . currentTimeMillis ()} ${ count ++ }" ĊĊĠĠĠ Ġfun Ġmd 5 Hex ( str : ĠString ?) Ġ= Ġstr ?. let Ġ{ ĠDigest Utils . md 5 Hex ( it ) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġåıª ä¿ĿçķĻ æķ°åŃĹ åĴĮ åŃĹ æ¯į ĊĠĠĠĠ Ġ* Ġ@ param Ġstr ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnum Or Letter ( str : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstr . trim (). replace ("[ ^ 0 - 9 a - zA - Z ] ". to Regex (), Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġåıª ä¿ĿçķĻ æķ°åŃĹ åĴĮ åŃĹ æ¯į ĊĠĠĠĠ Ġ* Ġ@ param Ġstr ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġletter ( str : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstr . trim (). replace ("[ ^ a - zA - Z ] ". to Regex (), Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġåıª ä¿ĿçķĻ æķ°åŃĹ åĴĮ åŃĹ æ¯į ĊĠĠĠĠ Ġ* Ġ@ param Ġstr ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġletter ( str : ĠString , Ġdef : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġletter ( str ). take If Ġ{ Ġit . isNotEmpty () Ġ} Ġ?: Ġdef ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġfirst Up ( source : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( source . isEmpty ()) Ġ"" Ġelse Ġ"${ source . substring ( 0 , Ġ 1 ). toUpperCase ()} ${ source . substring ( 1 )}" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠclassName ( source : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfirst Up ( num Or Letter ( source )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ¯ Ķ è¾ĥ çīĪæľ¬ åı· çļĦ å¤§å°ı , åīį èĢħ å¤§ åĪĻ è¿ĶåĽŀ ä¸Ģä¸ª æŃ£ æķ° , åĲİ èĢħ å¤§ è¿ĶåĽŀ ä¸Ģä¸ª è´Ł æķ° , çĽ¸ çŃī åĪĻ è¿ĶåĽŀ 0 ĊĠĠĠĠ Ġ* Ġ@ param Ġversion 1 ĊĠĠĠĠ Ġ* Ġ@ param Ġversion 2 ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcompare Version ( version 1 : ĠString ?, Ġversion 2 : ĠString ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( version 1 Ġ== Ġnull Ġ|| Ġversion 2 Ġ== Ġnull ) Ġreturn Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġversion Array 1 Ġ= Ġversion 1 . trim (). split ("\\ .". to Regex ()) // æ³¨æĦı æŃ¤ å¤Ħ ä¸º æŃ£ åĪĻ åĮ¹éħį ï¼Į ä¸įèĥ½ çĶ¨ "." ï¼Ľ ĊĠĠĠĠĠĠĠ Ġval Ġversion Array 2 Ġ= Ġversion 2 . trim (). split ("\\ .". to Regex ()) ĊĠĠĠĠĠĠĠ Ġvar Ġidx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġmin Length Ġ= ĠMath . min ( version Array 1 . size , Ġversion Array 2 . size )// åıĸ æľĢå°ı éķ¿åº¦ åĢ¼ ĊĠĠĠĠĠĠĠ Ġvar Ġdiff : ĠInt ĊĠĠĠĠĠĠĠ Ġwhile Ġ( idx Ġ< Ġmin Length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åħĪ æ¯Ķè¾ĥ éķ¿åº¦ , éķ¿åº¦ ä¸į ä¸Ģèĩ´ æĹ¶ ï¼Į è¾ĥ éķ¿ çļĦ æķ°åŃĹ ä¸º å¤§ ï¼Į ä¸į èĢĥèĻĳ 0 å¼Ģ å¤´ çļĦ æķ°åŃĹ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiff Ġ= Ġversion Array 1 [ idx ]. length Ġ- Ġversion Array 2 [ idx ]. length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( diff Ġ!= Ġ 0 ) Ġreturn Ġdiff ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiff Ġ= Ġversion Array 1 [ idx ]. compareTo ( version Array 2 [ idx ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( diff Ġ!= Ġ 0 ) Ġreturn Ġdiff ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ++ idx ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ å·²ç»ı åĪĨ åĩº å¤§å°ı ï¼Į åĪĻ çĽ´æİ¥ è¿ĶåĽŀ ï¼Į å¦Ĥæŀľ æľª åĪĨ åĩº å¤§å°ı ï¼Į åĪĻ åĨį æ¯Ķè¾ĥ ä½į æķ° ï¼Į æľī åŃĲ çīĪæľ¬ çļĦ ä¸º å¤§ ï¼Ľ ĊĠĠĠĠĠĠĠ Ġreturn Ġversion Array 1 . size Ġ- Ġversion Array 2 . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæĭ ¼ æİ¥ url ĊĠĠĠĠ Ġ* Ġ@ param Ġurls ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġappend ( urls : ĠArray < String >, Ġs : ĠString Ġ= Ġ"/ "): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Url Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġfor Ġ( url Ġin Ġurls ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . isEmpty ()) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Url . isNotEmpty () Ġ&& Ġ! new Url . endsWith ( s ) Ġ&& Ġ! url . startsWith ( s )) Ġnew Url . append ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Url . append ( url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnew Url . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Mark ( s : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġs ?. replace ("\" |' ". to Regex (), Ġ"") Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Line And Mark ( s : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġremove Mark ( s . replace ("\ r |\ n ". to Regex (), Ġ"")) ĊĠĠĠ Ġ} Ċ }