反转以从右到左语言编写的字符串

时间:2018-07-13 17:00:53

标签: lua

我正在寻找一种方法来反转以从右到左语言(例如希伯来语或阿拉伯语)书写的字符串。

通常,当我尝试使用string.reverse函数时,结果是在不完整的“反向”单词的开头和结尾缺少字符和奇数字符。

例如,这是我用作测试的代码(字符串中的希伯来字符):

local str = "ניסיון"

print(string.reverse(str))

这些是结果: �ויסינ�

现在,我认为它与“ \ 0”或“ null”字符有关,但是我真的找不到任何方法来检查它。当我在Lua中创建自己的函数以反转字符串时,仍然存在相同的问题。

是否有一种方法可以逆转从右到左语言的字符串,而不会成为结果?

2 个答案:

答案 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>