Java convierte los caracteres chinos en pinyin y juzga si un carácter es un carácter chino

El primero es convertir caracteres chinos a pinyin:
dependencias de importación:

 <dependency>
     <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>4.1.2</version>
  </dependency>

Cree un método estático para Pinyin para la conversión de pinyin, que también se puede encapsular en una clase de herramienta y llamar mediante la clase de herramienta:

public static String toPinyin(String chinese){
    
    
        String pinyinStr = "";
        char[] newChar = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < newChar.length; i++) {
    
    
            if (newChar[i] > 128) {
    
    
                try {
    
    
                    pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
                } catch (BadHanyuPinyinOutputFormatCombination e) {
    
    
                    e.printStackTrace();
                }
            }else{
    
    
                pinyinStr += newChar[i];
            }
        }
        return pinyinStr;
    }

inserte la descripción de la imagen aquí
La llamada en el método es exitosa. Aquí necesito poner mayúsculas y mantener espacios entre cada carácter chino. La operación es la siguiente:

  String name="西青果颗粒藏青果颗";
        String[] split = name.split("");
        String finalPy="";
        for (String s : split) {
    
    
            String s1 = toPinyin(s).toUpperCase(Locale.ROOT);
            finalPy= finalPy+" "+s1;
        }
        System.out.println(finalPy.trim());

inserte la descripción de la imagen aquí

Aquí todo está bien, pero si la cadena contiene símbolos especiales que no están en inglés, se informará un error de la siguiente manera:
inserte la descripción de la imagen aquí
Aquí debe reemplazar varios símbolos en chino con los que están en inglés:
use el método replaceAll de String para reemplazar, como se muestra en la imagen: inserte la descripción de la imagen aquí
Más tarde, aparecieron varios símbolos romanos. Este método es demasiado problemático. Puede juzgar si cada carácter es un carácter chino. Si es un carácter chino, llame al método toPinyin para convertirlo. Si no es un carácter chino, no se convertirá. Hay muchas maneras de lograrlo. Aquí Use uno: juzgue por el rango de codificación Unicode:

Pattern p2 = Pattern.compile("[\u4e00-\u9fa5]");
 Matcher m2 = p2.matcher(s);

inserte la descripción de la imagen aquí
Se puede ver que no importa cuál sea el símbolo, se emitirá tal como es, y
aquí hay otros rangos de codificación:

tipo alcance
personaje chino [0x4e00,0x9fa5]
número [0x30,0x39]
Letras minusculas [0x61,0x7a]
letra mayúscula [0x41,0x5a]

Enlace de referencia: el método para juzgar si una cadena es china en Java

Supongo que te gusta

Origin blog.csdn.net/weixin_42260782/article/details/131963870
Recomendado
Clasificación