Le code est très pratique, pas de bêtises ici, il suffit de le présenter
La fonction principale est de déterminer si une chaîne contient des caractères chinois et de la remplacer par ASCLL.
private static String regEx = "[//u4e00-//u9fa5]"; /** * Détermine si la chaîne contient des caractères chinois et remplace-les par ASCLL * * @param str_para * @return str_result */ private static String isChinese_Replace( String str_para ) { Modèle p = Pattern.compile ( regEx ); String str_result = str_para; str_1 = ""; String str_data[] = null; String str_return_reslut = ""; if ( str_result != null && str_result.trim().length() > 0 ) { try { str_data = str_result.split( "" ); pour (int i = 0; i < str_data.length; i++ ) { Matcher m = p.matcher( str_data[i] ); /* Ld(str_data[i]); */ int count = 0; if ( m.find() ) { count++; getBytes( "GBK" ); str_0 = Integer.toHexString( b[0] ); str_1 = Integer.toHexString( b[1]); ); str_return_reslut = str_return_reslut + "/" + conver10( str_0 ) + conver10( str_1 ) + "/" } else { str_return_reslut = str_return_reslut + str_data[i] } } } catch ( NumberFormatException e ) { e.printStackTrace() ; } catch ( UnsupportedEncodingException e ) { e.printStackTrace(); } } else { return(str_return_reslut); } return(str_return_reslut); } /* Conversion de chaîne en décimal*/ public static int conver10( String str_0 ) { return(Integer.parseInt( str_0.substring) ( str_0.length() - 2, str_0.length() ), 16 ) );
Jetons un coup d'œil à un code légèrement plus simple qui peut être utilisé dans des endroits où la demande n'est pas élevée.
importer java.util.regex.Matcher; importer java.util.regex.Pattern; démo de classe publique {static String regEx = "[/u4e00-/u9fa5]"; static Pattern pat = Pattern.compile (regEx); public static void main(String[] args) {String input = "Le monde de l'enfer !";System.out.println(isContainsChinese(input));input = "bonjour tout le monde";System.out.println(isContainsChinese(input));} public static boolean isContainsChinese(String str){Matcher matcher = pat.matcher(str);boolean flg = false;if (matcher.find()) {flg = vrai;}retourner flg;}
Enfin, nous attachons la gamme d'encodages Unicode pour différents caractères :
* Caractères chinois : [0x4e00,0x9fa5] (ou décimal [19968,40869])
* Nombre : [0x30,0x39] (ou décimal [48, 57])
*Lettres minuscules : [0x61,0x7a] (ou décimal [97, 122])
* Lettres majuscules : [0x41,0x5a] (ou décimales [65, 90])