我有以下阿拉伯文字符串:
عضو منذ 14 نوفمبر، 2009
乍一看,似乎在数字14之前有一个空格,但这并不是真的。我无法确定这个字符是什么。我尝试过isEmpty、isBlank、.equals("")、==null等方法,但没有任何一个返回true。如何检索该位置上的字符的unicode值?要提取字符,我这样做:
memberSinceText.substring(8, 9)
如果我们逐个查看字符并打印它们的Unicode对应项,可以使用以下方法:
val memberSinceText = "عضو منذ 14 نوفمبر، 2009"
memberSinceText.toCharArray()
.forEachIndexed { pos, c ->
println("$pos. $c -> ${String.format("\\%04x", c.toInt())}")
}
0. ع -> \0639
1. ض -> \0636
2. و -> \0648
3. -> \0020 // Space
4. م -> \0645
5. ن -> \0646
6. ذ -> \0630
7. -> \0020 // Space
8. 200f\ <- // actually omitting the symbol here due to copy&paste-problems
9. 1 -> \0031
10. 4 -> \0034
11. -> \0020 // Space
12. ن -> \0646
13. و -> \0648
14. ف -> \0641
15. م -> \0645
16. ب -> \0628
17. ر -> \0631
18. ، -> \060c
19. -> \0020 // Space
20. 2 -> \0032
21. 0 -> \0030
22. 0 -> \0030
23. 9 -> \0039
实际上,14
前后都有一个空格,但第8个位置也有一些其他特殊字符。如果我们查看其基本含义,通过应用我们的RTL视觉,我们会得到:\u200f
,这基本上是从右到左的标记。
打印该符号并添加一些上下文:
memberSinceText.substring(8, 9).also {
println(">$it|")
}
输出结果将是: |<
(注意方向)。然而,如果打印substring(7,8)
,你将得到一个空格字符:> |