package Ġcom . tan j ia jun . json recyclerview . utils Ċ Ċ import Ġjava . util . regex . Pattern Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠT an J ia Jun Ġon Ġ 5 / 2 9 / 2 1 . Ċ Ġ*/ Ċ private Ġval Ġurl Pattern : ĠPattern Ġ= ĠPattern . compile ( ĊĠĠĠ Ġ// Ġ éªĮè¯ģ æĺ¯åĲ¦ æĺ¯ http :// ãĢģ https :// ãĢģ ftp :// ãĢģ rt sp :// ãĢģ m ms :// åħ¶ä¸Ń ä¸Ģä¸ª ĊĠĠĠ Ġ"^ (( http | https | ftp | rt sp | m ms )? :// )? " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º FTP åľ°åĿĢ ï¼Ī ftp :// user : password @ ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º 0 åĪ° 9 ãĢģ å°ı åĨĻ åŃĹ æ¯į a åĪ° z ãĢģ _ ãĢģ ! ãĢģ ~ ãĢģ * ãĢģ ' ãĢģ ( ãĢģ ) ãĢģ . ãĢģ & ãĢģ = ãĢģ + ãĢģ $ ãĢģ % ãĢģ - åħ¶ä¸Ń ä¸Ģä¸ª ï¼Į åĮ¹éħį éĽ¶ æ¬¡ æĪĸèĢħ ä¸Ģæ¬¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" (([ 0 - 9 a - z _ ! ~ *' (). & = +\ $ % - ]+ : Ġ) ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º 0 åĪ° 9 ãĢģ å°ı åĨĻ åŃĹ æ¯į a åĪ° z ãĢģ _ ãĢģ ! ãĢģ ~ ãĢģ * ãĢģ ' ãĢģ ( ãĢģ ) ãĢģ . ãĢģ & ãĢģ = ãĢģ + ãĢģ $ ãĢģ % ãĢģ - åħ¶ä¸Ń ä¸Ģä¸ª ï¼Į åĮ¹éħį ä¸Ģæ¬¡ æĪĸèĢħ å¤ļ æ¬¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ 0 - 9 a - z _ ! ~ *' (). & = +\ $ % - ] +" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ@ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"@ )? " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º IP åľ°åĿĢ ï¼Į ä¾ĭåŃĲ ï¼ļ 1 9 2 . 1 6 8 . 2 5 5 . 2 5 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį 1 + [ 0 åĪ° 9 ï¼Į åĮ¹éħį ä¸¤ æ¬¡ ] ï¼Į ä¾ĭå¦Ĥ ï¼ļ 1 9 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" (( 1 \\ d { 2 }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĸèĢħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" |" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį 2 + [ 0 åĪ° 4 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ]+ [ 0 åĪ° 9 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ] ï¼Į ä¾ĭå¦Ĥ ï¼ļ 2 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 [ 0 - 4 ]\\ d " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĸèĢħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" |" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį 2 5 + [ 0 åĪ° 5 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ] ï¼Į ä¾ĭå¦Ĥ ï¼ļ 2 5 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 5 [ 0 - 5 ]" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĸèĢħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" |" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį [ 1 åĪ° 9 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ]+ [ 0 åĪ° 9 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ] ï¼Į ä¾ĭå¦Ĥ ï¼ļ 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ 1 - 9 ]\\ d " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĸèĢħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" |" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį 1 åĪ° 9 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ï¼Į ä¾ĭå¦Ĥ ï¼ļ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ 1 - 9 ]) " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį \. ( 1 \ d { 2 }| 2 [ 0 - 4 ]\ d | 2 5 [ 0 - 5 ] |[ 1 - 9 ]\ d |\ d )ï¼Į åĮ¹éħį ä¸ī æ¬¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( \\. (" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį 1 + [ 0 åĪ° 9 ï¼Į åĮ¹éħį ä¸¤ æ¬¡ ] ï¼Į ä¾ĭå¦Ĥ ï¼ļ 1 9 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 \\ d { 2 }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĸèĢħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" |" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį 2 + [ 0 åĪ° 4 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ]+ [ 0 åĪ° 9 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ] ï¼Į ä¾ĭå¦Ĥ ï¼ļ 2 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 [ 0 - 4 ]\\ d " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĸèĢħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" |" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį 2 5 + [ 0 åĪ° 5 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ] ï¼Į ä¾ĭå¦Ĥ ï¼ļ 2 5 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 5 [ 0 - 5 ]" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĸèĢħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" |" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį [ 1 åĪ° 9 ]+ [ 0 åĪ° 9 ] ï¼Į ä¾ĭå¦Ĥ ï¼ļ 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ 1 - 9 ]\\ d " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĸèĢħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" |" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį 0 åĪ° 9 ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ï¼Į ä¾ĭå¦Ĥ ï¼ļ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\\ d )) " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĮ¹éħį ä¸ī æ¬¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{ 3 }" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĪĸèĢħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" |" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º åŁŁåĲį ï¼Ī Domain ĠName ï¼ī ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä¸ī çº§ åŁŁåĲį æĪĸèĢħ ä»¥ä¸Ĭ ï¼Į åĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º 0 åĪ° 9 ãĢģ å°ı åĨĻ åŃĹ æ¯į a åĪ° z ãĢģ _ ãĢģ ! ãĢģ ~ ãĢģ * ãĢģ ' ãĢģ ( ãĢģ ) ãĢģ - åħ¶ä¸Ń ä¸Ģä¸ª ï¼Į åĮ¹éħį éĽ¶ æ¬¡ æĪĸèĢħ å¤ļ æ¬¡ ï¼Į çĦ¶åĲİ åĬł ä¸Ĭ . ï¼Į ä¾ĭå¦Ĥ ï¼ļ www . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ([ 0 - 9 a - z _ ! ~ *' ()- ]+ \\. )* " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ äºĮ çº§ åŁŁåĲį ï¼Į éķ¿åº¦ ä¸įèĥ½ è¶ħè¿ĩ 6 3 ä¸ª åŃĹç¬¦ ï¼Į åħĪ åĪ¤æĸŃ ç¬¬ä¸Ģä¸ª åŃĹç¬¦ æĺ¯åĲ¦ ä¸º 0 åĪ° 9 ãĢģ å°ı åĨĻ åŃĹ æ¯į a åĪ° z åħ¶ä¸Ń ä¸Ģä¸ª ï¼Į åĮ¹éħį ä¸Ģæ¬¡ ï¼Į çĦ¶åĲİ åĪ¤æĸŃ ç¬¬äºĮ ä¸ª åŃĹç¬¦ æĺ¯åĲ¦ ä¸º 0 åĪ° 9 ãĢģ å°ı åĨĻ åŃĹ æ¯į a åĪ° z ãĢģ - åħ¶ä¸Ń ä¸Ģä¸ª ï¼Į æľĢ å¤ļ åĮ¹éħį 6 1 æ¬¡ ï¼Į è¿Ļ ä¸¤ä¸ª åŃĹç¬¦ åĮ¹éħį éĽ¶ æ¬¡ æĪĸèĢħ ä¸Ģæ¬¡ ï¼Į æľĢåĲİ åĪ¤æĸŃ ç¬¬ä¸ī ä¸ª åŃĹç¬¦ æĺ¯åĲ¦ ä¸º 0 åĪ° 9 ãĢģ å°ı åĨĻ åŃĹ æ¯į a åĪ° z åħ¶ä¸Ń ä¸Ģä¸ª ï¼Į çĦ¶åĲİ åĬł ä¸Ĭ . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ([ 0 - 9 a - z ][ 0 - 9 a - z - ]{ 0 , 6 1 }) ?[ 0 - 9 a - z ]" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ é¡¶ çº§ åŁŁåĲį ï¼Į åĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º å°ı åĨĻ åŃĹ æ¯į a åĪ° z åħ¶ä¸Ń ä¸Ģä¸ª ï¼Į åĮ¹éħį æľĢ å°ĳ ä¸¤ æ¬¡ ãĢģ æľĢ å¤ļ åħŃ æ¬¡ ï¼Į ä¾ĭå¦Ĥ ï¼ļ . com ãĢģ . cn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\\ .[ a - z ]{ 2 , 6 })" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç«¯åı£ åı· ï¼Į åĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ åĮ¹éħį :+ [ 0 åĪ° 9 ï¼Į åĮ¹éħį æľĢ å°ĳ ä¸Ģæ¬¡ ãĢģ æľĢ å¤ļ åĽĽ æ¬¡ ] ï¼Į åĮ¹éħį éĽ¶ æ¬¡ æĪĸèĢħ ä¸Ģæ¬¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" (: [ 0 - 9 ]{ 1 , 4 }) ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º æĸ ľ æĿ ł ï¼Ī / ï¼īï¼Į åĮ¹éħį éĽ¶ æ¬¡ æĪĸèĢħ ä¸Ģæ¬¡ ï¼Į å¦Ĥæŀľ æ²¡æľī æĸĩä»¶ åĲį ï¼Į å°± ä¸įéľĢè¦ģ æĸ ľ æĿ ł ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" (( /? )| " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º 0 åĪ° 9 ãĢģ å°ı åĨĻ åŃĹ æ¯į a åĪ° z ãĢģ å¤§ åĨĻ åŃĹ æ¯į A åĪ° Z ãĢģ _ ãĢģ ! ãĢģ ~ ãĢģ * ãĢģ ' ãĢģ ( ãĢģ ) ãĢģ . ãĢģ ; ãĢģ ? ãĢģ : ãĢģ @ ãĢģ & ãĢģ = ãĢģ + ãĢģ $ ãĢģ , ãĢģ % ãĢģ # ãĢģ - åħ¶ä¸Ń ä¸Ģä¸ª ï¼Į åĮ¹éħį ä¸Ģæ¬¡ æĪĸèĢħ å¤ļ æ¬¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" (/ [ 0 - 9 a - zA - Z _ ! ~ *' (){} .; ?: @ & = +\ $ ,% #- ]+ )+" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪ¤æĸŃ åŃĹç¬¦ æĺ¯åĲ¦ ä¸º æĸ ľ æĿ ł ï¼Ī / ï¼īï¼Į åĮ¹éħį éĽ¶ æ¬¡ æĪĸèĢħ ä¸Ģæ¬¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"/ ? )\ $" Ċ ) Ċ Ċ /** Ċ Ġ* ĠDetermine Ġif Ġit Ġis Ġa ĠURL . Ċ Ġ* ĠåĪ¤æĸŃ æĺ¯åĲ¦ ä¸º url ãĢĤ Ċ Ġ* Ċ Ġ* Ġ@ param Ġstr ĠThe Ġstring Ġto Ġbe Ġmatched . Ċ Ġ* Ġ@ return ĠWhether Ġthe Ġresult Ġis Ġa ĠURL . Ċ Ġ*/ Ċ fun Ġis Url ( str : ĠString ) Ġ= ĊĠĠĠ Ġurl Pattern . matcher ( str ). matches () Ċ Ċ /** Ċ Ġ* ĠGet Ġhierarchy Ġstring . Ċ Ġ* Ġ å¾ĹåĪ° å¸¦ æľī å±Ĥ æ¬¡ ç»ĵæŀĦ çļĦ çļĦ åŃĹç¬¦ä¸² ãĢĤ Ċ Ġ* Ċ Ġ* Ġ@ param Ġhierarchy ĠThe Ġhierarchy . Ċ Ġ* Ġ@ return ĠThe Ġhierarchy Ġstring . Ċ Ġ*/ Ċ fun Ġget Hierarchy Str ( hierarchy : ĠInt ): ĠString Ġ= ĊĠĠĠ ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġhierarchy ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç©º åĽĽ æł¼ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("\ r \ r \ r \ r ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. toString () Ċ Ċ /** Ċ Ġ* ĠFormat Ġthe ĠJSON Ġto Ġindent . Ċ Ġ* Ġå¯¹ JSON æł¼å¼ı åĮĸ ç¼© è¿Ľ Ċ Ġ* Ċ Ġ* Ġ@ param Ġjson Str ĠThe Ġjson Ġstring . Ċ Ġ* Ġ@ return ĠThe Ġjson Ġstring Ġthat Ġhave Ġbeen Ġformatted Ġand Ġindent ed . Ċ Ġ*/ Ċ fun Ġjson Format ( json Str : ĠString ): ĠString Ġ= ĊĠĠĠ ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlevel Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġjson Str . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Ġ= Ġjson Str [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( level Ġ> Ġ 0 Ġ&& Ġ'\ n ' Ġ== ĠtoString ()[ length Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( get Hierarchy Str ( level )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( char ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'{ ', Ġ'[' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( char ). append ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ',' Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( char ). append ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' }', Ġ' ]' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( get Hierarchy Str ( level )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( char ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( char ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. toString ()