util tutorial regular pattern matches example java regex unicode astral-plane

tutorial - regex java 8



Los caracteres de la coincidencia de expresiones regex Java fuera del plano multilingüe básico (2)

¿Cómo puedo unir personajes (con la intención de eliminarlos) del exterior del plano multilingüe básico unicode en java?


¿Estás buscando personajes específicos o todos los personajes fuera del BMP?

Si lo primero, puede usar un StringBuilder para construir una cadena que contenga puntos de código de los planos superiores, y regex funcionará como se espera:

String test = new StringBuilder().append("test").appendCodePoint(0x10300).append("test").toString(); Pattern regex = Pattern.compile(new StringBuilder().appendCodePoint(0x10300).toString()); Matcher matcher = regex.matcher(test); matcher.find(); System.out.println(matcher.start());

Si está buscando eliminar todos los caracteres que no son BMP de una cadena, entonces usaría StringBuilder directamente en lugar de regex:

StringBuilder sb = new StringBuilder(test.length()); for (int ii = 0 ; ii < test.length() ; ) { int codePoint = test.codePointAt(ii); if (codePoint > 0xFFFF) { ii += Character.charCount(codePoint); } else { sb.appendCodePoint(codePoint); ii++; } }


Para eliminar todos los caracteres que no sean BMP, lo siguiente debería funcionar:

String sanitizedString = inputString.replaceAll("[^/u0000-/uFFFF]", "");