我正在寻找一种方法来反转以从右到左语言(例如希伯来语或阿拉伯语)书写的字符串。
通常,当我尝试使用string.reverse
函数时,结果是在不完整的“反向”单词的开头和结尾缺少字符和奇数字符。
例如,这是我用作测试的代码(字符串中的希伯来字符):
local str = "ניסיון"
print(string.reverse(str))
这些是结果:
�ויסינ�
现在,我认为它与“ \ 0”或“ null”字符有关,但是我真的找不到任何方法来检查它。当我在Lua中创建自己的函数以反转字符串时,仍然存在相同的问题。
是否有一种方法可以逆转从右到左语言的字符串,而不会成为结果?
答案 0 :(得分:2)
。-是unicode符号,用于替换“未知,无法识别或无法表示的字符”。因此基本上string.reverse()
的unicode不能识别那些字符,因此将其替换为``。
在Lua中,我不会用非英语字符做很多事情,但是我建议您看看Lua Unicode库页面,或者看看this module,它为UTF- Lua和LuaJIT为8。最后,此Stack Overflow question很好地解释了Lua对Unicode的支持如何工作。 如果所有这些都失败了,您可能只需要通过将每个字符存储到数组中,然后在最终将它们重新编译成字符串之前反转数组的顺序,来制作自己的反向函数。
希望这会有所帮助!
答案 1 :(得分:1)
string.reverse
反转字符串中的 bytes ,如果字符串包含使用多字节编码(例如UTF-8)编码的文本,则不一定是其 characters 。 / p>