public static String encode ( String realpath ) { int qIndex = realpath . indexOf ( ' ' ) ; if ( qIndex == - 1 ) return realpath ; String file = realpath . substring ( 0 , qIndex ) ; String query = realpath . substring ( qIndex + 1 ) ; int sIndex = query . indexOf ( ' ' ) ; String anker = null ; if ( sIndex != - 1 ) { // print.o(sIndex); anker = query . substring ( sIndex + 1 ) ; query = query . substring ( 0 , sIndex ) ; } StringBuilder res = new StringBuilder ( file ) ; // query if ( ! StringUtil . isEmpty ( query ) ) { StringList list = ListUtil . toList ( query , ' ' ) ; String str ; int index ; char del = ' ' ; while ( list . hasNext ( ) ) { res . append ( del ) ; del = ' ' ; str = list . next ( ) ; index = str . indexOf ( ' ' ) ; if ( index == - 1 ) res . append ( escapeQSValue ( str ) ) ; else { res . append ( escapeQSValue ( str . substring ( 0 , index ) ) ) ; res . append ( ' ' ) ; res . append ( escapeQSValue ( str . substring ( index + 1 ) ) ) ; } } } // anker if ( anker != null ) { res . append ( ' ' ) ; res . append ( escapeQSValue ( anker ) ) ; } return res . toString ( ) ; }
merge them somehow