¿Cómo puedo unir caracteres (con la intención de eliminarlos) del exterior del plano multilingüe básico unicode en java?Caracteres de coincidencia de expresiones regulares de Java fuera del plano multilingüe básico
15
A
Respuesta
19
para eliminar todos los caracteres que no son BMP, el siguiente debería funcionar:
String sanitizedString = inputString.replaceAll("[^\u0000-\uFFFF]", "");
3
¿Está buscando caracteres específicos o todos los caracteres fuera del BMP?
En el primer caso, se puede utilizar un StringBuilder
para construir una cadena que contiene los puntos de código a partir de los planos superiores, y la expresión regular 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 usted está buscando para eliminar toda no -BMP caracteres de una cadena, entonces me gustaría usar StringBuilder
directamente en lugar de expresiones regulares:
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++;
}
}
Cuestiones relacionadas
- 1. coincidencia de expresiones regulares de Java
- 2. En Windows, ¿cómo se ingresa un carácter fuera del plano multilingüe básico Unicode?
- 3. Coincidencia de guiones Unicode en expresiones regulares de Java?
- 4. Escapar caracteres especiales en Java Expresiones regulares
- 5. Plano multilingüe complementario Unicode en Java
- 6. expresiones regulares encontrar caracteres entre ""
- 7. RoR expresiones regulares clase de caracteres
- 8. Expresiones regulares en xsl: atributo de coincidencia de plantilla
- 9. Java expresiones regulares y signo de dólar
- 10. Puntuacion expresiones regulares en Java
- 11. Expresiones regulares simples de alto rendimiento de Java
- 12. Scala: Coincidencia de los grupos de expresiones regulares opcionales
- 13. ¿Cancela una coincidencia de expresiones regulares de larga ejecución?
- 14. Expresiones regulares para la coincidencia de nombre de archivo
- 15. Java expresiones regulares reemplazar
- 16. Argumentos Java expresiones regulares
- 17. Vim: ¿comandos para seleccionar visualmente una coincidencia de expresiones regulares?
- 18. de expresiones regulares negativo
- 19. Coincidencia de plurales usando expresiones regulares en C#
- 20. Coincidencia de estructuras anidadas con expresiones regulares en Python
- 21. Captura de la primera coincidencia con expresiones regulares (C#)
- 22. expresiones regulares en PHP: Coincidencia con el UTS18 estándar
- 23. Expresión de expresiones regulares de 6 caracteres como mínimo
- 24. de expresiones regulares para eliminar todo menos caracteres y números
- 25. Incluyendo comentarios en expresiones regulares de Java
- 26. Java 6 varias coincidencias de expresiones regulares de un grupo
- 27. expresiones regulares vim con meta-caracteres
- 28. caracteres griegos, expresiones regulares y C#
- 29. Eliminar caracteres con expresiones regulares en C#
- 30. Expresiones regulares y GWT
¿Has probado esto? Debido a que su rango de caracteres incluye el rango sustituto utilizado para construir puntos de código que no sean BMP. – Anon
@Anon: Como señaló en su propia respuesta, las expresiones regulares se evalúan a nivel de puntos de código, no de codeunits, por lo que no se visualizan sustitutos. – axtavt
Sí, esto se ha probado con caracteres que no son BMP. –