kotlin - 使用 Kotlin 从字符串中的字符获取 unicode 值
问题描述
我有以下字符串是阿拉伯语:
عضو منذ 14 نوفمبر، 2009
乍一看,数字 14 之前似乎有一个空格,但事实并非如此。我无法确定这个角色是什么。我试过 isEmpty, isBlank, .equals(""), == null 但没有返回 true。如何检索该位置字符的 unicode 值?为了只提取字符,我这样做:
memberSinceText.substring(8, 9)
解决方案
如果我们逐个查看字符并打印它们的 unicode-counterpart,使用:
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)
将为您提供空格字符:> |
推荐阅读
- javascript - 渲染组件时Vue检测外部点击
- mysql - 如何从两列中获取唯一性?
- python - 使用 selenium Python 向下滚动时页面不会自动加载
- android - 在某些设备上的缩放动画期间,有时文本会在 TextView 中消失
- android - 在Android中的小时间间隔内防止触摸
- types - 用于浮点数或复杂输入的 rust-ndarray 函数
- reactjs - 如何在 React 17 中使用反应测试库模拟表格数据?
- excel - 将 Excel 表连接到 Power BI 服务数据集
- javascript - 将 CSS 样式表与 JS 模块相结合
- riscv - 创建自定义 RISC-V 指令时无法识别的操作码