使用Kotlin从字符串中获取字符的unicode值

3

我有以下阿拉伯文字符串:

عضو منذ ‏14 نوفمبر، 2009

乍一看,似乎在数字14之前有一个空格,但这并不是真的。我无法确定这个字符是什么。我尝试过isEmpty、isBlank、.equals("")、==null等方法,但没有任何一个返回true。如何检索该位置上的字符的unicode值?要提取字符,我这样做:

memberSinceText.substring(8, 9)
1个回答

3

如果我们逐个查看字符并打印它们的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),你将得到一个空格字符:> |


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接