package Ġca . fu w af u wa . k aku Ċ Ċ class ĠLang Utils Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠK ana Half : ĠInt Array Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 9 2 , Ġ 0 x 3 0 4 1 , Ġ 0 x 3 0 4 3 , Ġ 0 x 3 0 4 5 , Ġ 0 x 3 0 4 7 , Ġ 0 x 3 0 4 9 , Ġ 0 x 3 0 8 3 , Ġ 0 x 3 0 8 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 8 7 , Ġ 0 x 3 0 6 3 , Ġ 0 x 3 0 FC , Ġ 0 x 3 0 4 2 , Ġ 0 x 3 0 4 4 , Ġ 0 x 3 0 4 6 , Ġ 0 x 3 0 4 8 , Ġ 0 x 3 0 4 A , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 4 B , Ġ 0 x 3 0 4 D , Ġ 0 x 3 0 4 F , Ġ 0 x 3 0 5 1 , Ġ 0 x 3 0 5 3 , Ġ 0 x 3 0 5 5 , Ġ 0 x 3 0 5 7 , Ġ 0 x 3 0 5 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 5 B , Ġ 0 x 3 0 5 D , Ġ 0 x 3 0 5 F , Ġ 0 x 3 0 6 1 , Ġ 0 x 3 0 6 4 , Ġ 0 x 3 0 6 6 , Ġ 0 x 3 0 6 8 , Ġ 0 x 3 0 6 A , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 6 B , Ġ 0 x 3 0 6 C , Ġ 0 x 3 0 6 D , Ġ 0 x 3 0 6 E , Ġ 0 x 3 0 6 F , Ġ 0 x 3 0 7 2 , Ġ 0 x 3 0 7 5 , Ġ 0 x 3 0 7 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 7 B , Ġ 0 x 3 0 7 E , Ġ 0 x 3 0 7 F , Ġ 0 x 3 0 8 0 , Ġ 0 x 3 0 8 1 , Ġ 0 x 3 0 8 2 , Ġ 0 x 3 0 8 4 , Ġ 0 x 3 0 8 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 8 8 , Ġ 0 x 3 0 8 9 , Ġ 0 x 3 0 8 A , Ġ 0 x 3 0 8 B , Ġ 0 x 3 0 8 C , Ġ 0 x 3 0 8 D , Ġ 0 x 3 0 8 F , Ġ 0 x 3 0 9 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠK ana Vo iced : ĠInt Array Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 F 4 , Ġ 0 xFF 7 4 , Ġ 0 xFF 7 5 , Ġ 0 x 3 0 4 C , Ġ 0 x 3 0 4 E , Ġ 0 x 3 0 5 0 , Ġ 0 x 3 0 5 2 , Ġ 0 x 3 0 5 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 5 6 , Ġ 0 x 3 0 5 8 , Ġ 0 x 3 0 5 A , Ġ 0 x 3 0 5 C , Ġ 0 x 3 0 5 E , Ġ 0 x 3 0 6 0 , Ġ 0 x 3 0 6 2 , Ġ 0 x 3 0 6 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 6 7 , Ġ 0 x 3 0 6 9 , Ġ 0 xFF 8 5 , Ġ 0 xFF 8 6 , Ġ 0 xFF 8 7 , Ġ 0 xFF 8 8 , Ġ 0 xFF 8 9 , Ġ 0 x 3 0 7 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 7 3 , Ġ 0 x 3 0 7 6 , Ġ 0 x 3 0 7 9 , Ġ 0 x 3 0 7 C ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠK ana Sem i Vo iced : ĠInt Array Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 x 3 0 7 1 , Ġ 0 x 3 0 7 4 , Ġ 0 x 3 0 7 7 , Ġ 0 x 3 0 7 A , Ġ 0 x 3 0 7 D ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġfun ĠConvert K an at ana To H ir ag ana ( text : ĠString ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult : ĠStringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġord Prev : ĠInt Ġ= Ġ 0 ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġtext ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġord Curr : ĠInt Ġ= Ġi . toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFull - width Ġk ata k ana Ġto Ġh ir ag ana ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( ord Curr Ġ>= Ġ 0 x 3 0 A 1 ) Ġ&& Ġ( ord Curr Ġ<= Ġ 0 x 3 0 F 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġord Curr Ġ-= Ġ 0 x 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHalf - width Ġk ata k ana Ġto Ġh ir ag ana ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ(( ord Curr Ġ>= Ġ 0 xFF 6 6 ) Ġ&& Ġ( ord Curr Ġ<= Ġ 0 xFF 9 D )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġord Curr Ġ= ĠK ana Half [ ord Curr Ġ- Ġ 0 xFF 6 6 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠVo iced Ġ( used Ġin Ġhalf - width Ġk ata k ana ) Ġto Ġh ir ag ana ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( ord Curr Ġ== Ġ 0 xFF 9 E ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ord Prev Ġ>= Ġ 0 xFF 7 3 Ġ&& Ġord Prev Ġ<= Ġ 0 xFF 8 E ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . set Length ( result . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġord Curr Ġ= ĠK ana Vo iced [ ord Prev Ġ- Ġ 0 xFF 7 3 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSemi - vo iced Ġ( used Ġin Ġhalf - width Ġk ata k ana ) Ġto Ġh ir ag ana ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( ord Curr Ġ== Ġ 0 xFF 9 F ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ord Prev Ġ>= Ġ 0 xFF 8 A Ġ&& Ġord Prev Ġ<= Ġ 0 xFF 8 E ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . set Length ( result . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġord Curr Ġ= ĠK ana Sem i Vo iced [ ord Prev Ġ- Ġ 0 xFF 8 A ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIgnore ĠJapanese Ġ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( ord Curr Ġ== Ġ 0 xFF 5 E ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġord Prev Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( ord Curr . to Char ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġord Prev Ġ= Ġord Curr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }