Ich versuche, eine Methode zum Erkennen von Strings in Java von rechts nach links Sprache zu erkennen. Ich bin mit this question etwas ähnliches in C# gekommen.
Jetzt muss ich so etwas haben, aber in Java geschrieben.
Jede Hilfe wird geschätzt.Wie erkennt man, ob eine Zeichenfolge ein Zeichen von rechts nach links enthält?
Antwort
kam ich mit dem folgenden Code auf:
char[] chars = s.toCharArray();
for(char c: chars){
if(c >= 0x600 && c <= 0x6ff){
//Text contains RTL character
break;
}
}
Es ist keine sehr effizient oder für diese Angelegenheit eine genaue Art und Weise, aber man Ideen geben kann.
Vielleicht sollte dies helfen:
http://en.wikipedia.org/wiki/Right-to-left_mark
Es eine Unicode-Zeichen sein sollte, nämlich U + 200F, wenn ein rtl String vorhanden ist.
Grüße
Frage ist alt, aber vielleicht jemand anderes könnte das gleiche Problem ...
Nach mehreren Lösungen versucht, ich eine gefunden, die für mich funktioniert:
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
}
Dies funktioniert nicht, da RTL Text ohne diese Zeichen geschrieben wird. – Liggliluff
Hier Version Antwort des Darko verbessert hat:
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;
}
Dieser Code für alle folgenden Fällen funktioniert für mich:
בוקר טוב => true
good morning בוקר טוב => false
בוקר טוב good morning => true
good בוקר טוב morning => false
בוקר good morning טוב => true
(בוקר טוב) => true
- 1. Wie erkennt man, ob ein Zeichen zu einer Sprache von Rechts nach Links gehört?
- 2. Wie erkennt man eine rechts-nach-links-Windows-Schnittstelle C#?
- 3. jQuery erkennt, ob eine Zeichenfolge etwas enthält
- 4. Wie erkennt man, ob eine Zeichenfolge mindestens eine Zahl enthält?
- 5. Wie erkennt man, ob eine Zeichenfolge ein bestimmtes Zeichen in JavaScript enthält?
- 6. Wie erkennt man, ob eine Zeichenfolge Sonderzeichen enthält?
- 7. Wie erstellt man ein Dia-Menü (von rechts nach links/von links nach rechts) mit jQuery
- 8. Zeichen in Zeichenfolge mit gemischten Sprachen von links nach rechts und von rechts nach links umkehren mit SQL?
- 9. wie zu überprüfen, ob eine Zeichenfolge ein Zeichen enthält
- 10. Wie erkennt man, ob eine HTML-Seite ein Video enthält?
- 11. rechts nach links Zeichenfolge in SQL Server
- 12. Überprüfen Sie, ob eine Zeichenfolge enthält Zeichen
- 13. Wie überprüft man, ob ein String ein bestimmtes Zeichen enthält?
- 14. RegEx, um festzustellen, ob eine Zeichenfolge ein bestimmtes Zeichen enthält
- 15. rechts nach links Zeichenfolge in Crystal Report
- 16. wie überprüfen, ob Zeichenfolge enthält Zeichen ‚+‘
- 17. Wie erkennt man, ob ein JPEG CMYK-Farbprofil enthält?
- 18. Wie überprüft man, ob ein TextView eine bestimmte Zeichenfolge enthält
- 19. Streifen links/rechts eine Zeichenfolge (und chomp)
- 20. PHP: Wie kann man feststellen, ob eine Zeichenfolge Sonderzeichen enthält?
- 21. Von rechts nach links Eingabemaske
- 22. Wie man von rechts nach links lineares Layout gestaltet
- 23. Wie nach links nach rechts schieben ein Element von jquery
- 24. Überlauf nach links statt rechts
- 25. Wie erkennt man, ob ein String bestimmte UTF-8-Zeichen enthält? (Python)
- 26. ContextMenu Von rechts nach links
- 27. rechts nach links SnackBar
- 28. Wie überprüft man, ob eine Zeichenfolge eine bestimmte Teilzeichenfolge enthält?
- 29. Wie scrollt man von links nach rechts auf einem JLabel
- 30. Überprüfen, ob Zeichenfolge bestimmte Zeichen enthält
Sie sollten (c> = 0x5D0 && c <= 0x6ff) verwenden, um Hebräisch einzuschließen, das ebenfalls eine RTL-Sprache ist. –