将从右到左书写的字符串翻转

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

通常,当我尝试使用 string.reverse 函数时,结果会缺少字符,并且在不完整的“翻转”单词的开头和结尾处出现奇怪的字符。

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

local str = "ניסיון"

print(string.reverse(str))

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

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

是否有一种无需出现这种结果即可翻转从右到左语言的字符串的方法?

点赞
用户10018042
用户10018042

�是一个unicode符号,表示用于替换“未知的,无法识别的或无法表示的字符”。所以基本上,string.reverse()的unicode不能识别末尾的那些字符,因此它用�符号进行替换。

我没有在Lua中使用非英文字符,但我建议看一下Lua Unicode库页面,或查看此模块,提供了对Lua和LuaJIT的UTF-8支持。最后,这个 Stack Overflow问题有很好的解释,Lua对Unicode的支持是如何工作的。

如果所有这些都失效,您可能得自己编写倒置函数,将每个字符存储到一个数组中,然后将数组的顺序反转,最后将它们编译回字符串中。

希望这有所帮助!

2018-07-13 17:12:10
用户107090
用户107090

string.reverse 反转字符串中的 _字节_,如果字符串包含使用多字节编码(例如 UTF-8)编码的文本,则不一定反转其 _字符_。

2018-07-13 20:40:58