我试图做一个方法来检测在Java中从右到左语言编写的字符串。我已经拿出this question在C#中做类似的事情。
现在我需要有类似的东西,但用Java编写。
任何帮助表示赞赏。如何检测字符串是否包含任何从右到左的字符?
6
A
回答
10
我想出了下面的代码:
char[] chars = s.toCharArray();
for(char c: chars){
if(c >= 0x600 && c <= 0x6ff){
//Text contains RTL character
break;
}
}
这不是一个非常有效的或与此有关的一个准确的方法,但可以提供一个思路。
0
7
问题是旧的,但也许其他人可能有同样的问题...
尝试多种解决方案之后,我发现,我的作品之一:
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
}
+0
这不起作用,因为RTL文本没有这些标记写入。 – Liggliluff 2017-02-09 23:43:54
1
这里的改进达科的回答版本:
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;
}
此代码的工作对我来说所有的下列情况:
בוקר טוב => true
good morning בוקר טוב => false
בוקר טוב good morning => true
good בוקר טוב morning => false
בוקר good morning טוב => true
(בוקר טוב) => true
相关问题
- 1. 如何检查一个字符串是否包含任何一些字符串
- 2. 如何检查字符串是否包含C#中的字符?
- 3. JS:测试字符串是否包含任何unicode首字母
- 4. Powershell:如何检查字符串是否包含任何重要字符?
- 5. 如何检查字符串是否包含某个字符?
- 6. 如何检查是否字符串包含数字符号
- 7. 如何检测字符串是否包含java中的URL?
- 8. 如何检查字符串是否包含字母表中的任何字母?
- 9. 检查字符串是否包含字(不是子字符串!)
- 10. 检查一个字符串是否包含任何字符串数组元素
- 11. 如何验证字符串是否包含列表中的任何字符串?
- 12. 检查字符串是否包含任何非数字字符 - 没有库 - Java
- 13. 检查字符串是否在PHP中不包含任何字母字符?
- 14. 如何检查一个字符串是否包含来自另一个字符串的任何字符?
- 15. 如何检测一个字符串是否包含特殊字符?
- 16. 如何查找字符串是否包含任何字符串列表项?
- 17. php:如何检查字符串是否包含任何列出的关键字?
- 18. 检查是否字符串包含任何顺序的特定字符
- 19. 如何检查字符串是否包含PowerShell中的数字
- 20. 如何检测包含任意字符串的模式?
- 21. 如何检查字符串是否只包含英文字母?
- 22. Java,如何检查一个字符串是否包含数字?
- 23. 如何检查字符串数组是否包含特定的字符串?
- 24. 如何检查字符串是否包含appway脚本中的子字符串?
- 25. 测试一个字符串是否包含另一个字中的任何字
- 26. 检查是否字符串包含“HTTP://”
- 27. 检查行是否包含字符串
- 28. 如何查找字符串是否包含任何特殊字符?
- 29. React-Native:检查字符串是否包含字符串
- 30. 检查字符串是否不包含其他字符串
您应该使用(c> = 0x5D0 && c <= 0x6ff)来包含希伯来语,它也是一种RTL语言。 – 2014-02-25 08:51:28