Estoy tratando de hacer un método para detectar cadenas escritas en idiomas de derecha a izquierda en Java. He encontrado this question haciendo algo similar en C#.
Ahora necesito tener algo así, pero escrito en Java.
Se agradece cualquier ayuda.¿Cómo detectar si una cadena contiene algún caracter de derecha a izquierda?
Respuesta
me ocurrió con el siguiente código:
char[] chars = s.toCharArray();
for(char c: chars){
if(c >= 0x600 && c <= 0x6ff){
//Text contains RTL character
break;
}
}
No es un muy eficiente o para el caso una forma precisa, pero puede dar una ideas.
Tal vez esto debería ayudar:
http://en.wikipedia.org/wiki/Right-to-left_mark
Debe haber un char Unicode, llamado U + 200F, cuando una cadena RTL está presente.
Saludos
pregunta es viejo, pero tal vez alguien más podría tener el mismo problema ...
Después de probar varias soluciones que encontré el que funciona para mí:
if (Character.getDirectionality(string.charAt(0)) == Character.DIRECTIONALITY_RIGHT_TO_LEFT
|| Character.getDirectionality(string.charAt(0)) == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC
|| Character.getDirectionality(string.charAt(0)) == Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING
|| Character.getDirectionality(string.charAt(0)) == Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE
) {
// it is a RTL string
}
Esto no funcionaría, ya que el texto RTL se escribe sin estas marcas. – Liggliluff
Aquí está mejorada versión de la respuesta de Darko:
public static boolean isRtl(String string) {
if (string == null) {
return false;
}
for (int i = 0, n = string.length(); i < n; ++i) {
byte d = Character.getDirectionality(string.charAt(i));
switch (d) {
case DIRECTIONALITY_RIGHT_TO_LEFT:
case DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
case DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING:
case DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE:
return true;
case DIRECTIONALITY_LEFT_TO_RIGHT:
case DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING:
case DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE:
return false;
}
}
return false;
}
Este código funciona para mí para todos los siguientes casos:
בוקר טוב => true
good morning בוקר טוב => false
בוקר טוב good morning => true
good בוקר טוב morning => false
בוקר good morning טוב => true
(בוקר טוב) => true
- 1. ¿Cómo detectar si un personaje pertenece a un idioma de derecha a izquierda?
- 2. Cómo explotar una cadena de derecha a izquierda?
- 3. PHP: ¿Cómo saber si una cadena contiene algún carácter especial?
- 4. ¿Cómo detectar si una cadena contiene al menos un número?
- 5. ¿Cómo detectar si una cadena contiene caracteres especiales?
- 6. De derecha a izquierda UILabels
- 7. idiomas de derecha a izquierda en Python
- 8. texto: derecha a izquierda (CSS)
- 9. ¿Cómo detectar deslizar hacia la izquierda/derecha en el iPhone?
- 10. Reemplazar cadena de derecha a izquierda en Python?
- 11. Detectar si una cadena contiene una cadena en Jquery/Javascript cuando la cadena está delimitada inusualmente
- 12. Cómo mover una imagen de izquierda a derecha en Android
- 13. Funciones de Haskell de izquierda a derecha
- 14. Directrices de IU de derecha a izquierda?
- 15. Desarrollar una aplicación de Android de derecha a izquierda
- 16. de derecha a izquierda por correo electrónico
- 17. cambiar una caracter en una cadena c
- 18. ¿Cómo comprobar si una cadena contiene algún elemento de una lista <string>?
- 19. Iphone y texto de derecha a izquierda
- 20. ¿Cómo comprobar si una cadena contiene letras inglesas (A-Z)?
- 21. SI una celda contiene una cadena
- 22. LinearLayout lleno de derecha a izquierda
- 23. Compruebe si una cadena contiene una subcadena
- 24. Evaluación de expresión de izquierda a derecha
- 25. ¿Puedes hacer una entrada de EditText de derecha a izquierda?
- 26. Lanzar una cuaternión de derecha a izquierda entregó coordenadas
- 27. Flexslider y compatibilidad de idioma de derecha a izquierda
- 28. Si la cadena contiene una barra inclinada
- 29. ¿Cómo detectar si una página HTML contiene un video?
- 30. Compruebe si una cadena contiene los números
Debe usar (c> = 0x5D0 && c <= 0x6ff) para incluir hebreo, que también es un lenguaje RTL. –