我正在尝试使用阿拉伯语和英语文本

时间:2019-03-11 10:26:22

标签: ios swift swift3 string-concatenation pdfkit

例如,我试图用英语将阿拉伯文字与英语相结合:

let pdfName = "\(name)_copy_1234.pdf"

名称类似于:وصغار

1234是我的随机数

但是在文档文件夹中,它的保存方式如下: copy_35679_وصغا。pdf

2 个答案:

答案 0 :(得分:1)

这不是特定于Swift的问题,因为它已纳入Unicode标准,并且与Unicode支持双向脚本( eg 拉丁和从右至左脚本)的方式有关例如阿拉伯语)。考虑在此处Unicode Controls for Bidirectional Text处查看详细的解释,以更好地理解方向改写字符的工作原理。

CodeBlender的答案为您提供了一个很好的示例-但是,在保存包含扩展字符集的文件名时要格外小心,例如在保存到旧版操作系统或在计算机之间传输时,您可能会遇到问题。

答案 1 :(得分:0)

您需要正确地转义pdfName字符串的开头和结尾,如下所示:

let name = "وصغار"
let pdfName = "\u{202A}\(name)_copy_1234.pdf\u{202C}"
print(pdfName)

// English ‪وصغار_copy_1234.pdf‬
// Arabic ‪وصغار_copy_1234.pdf‬

Apple讨论了it here,但是代码是针对Objective-C的,因此它没有显示如何使用{}将Swift正确地封装起来。