Я пытаюсь соединить арабский и английский текст - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь объединить арабский текст с английским текстом, например:

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

имя похоже на: وصغار

1234 - мое случайное число

Но в папке с документами оно сохраняется так: copy_35679_ وصغا. Pdf

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Это не специфичная для Swift проблема, поскольку она встроена в стандарт Unicode и связана с тем, как Unicode поддерживает двунаправленные сценарии ( например, латинские и справа налево сценарии, такие каккак арабский).Рассмотрите подробное объяснение здесь Unicode Controls для двунаправленного текста , чтобы лучше понять, как работают символы изменения направления.

Ответ CodeBlender указывает на пример, который работает нормально - однако, будьте осторожныпри сохранении имен файлов, которые содержат расширенные наборы символов, например, могут возникнуть проблемы при сохранении в устаревших операционных системах или при переносе между компьютерами, например.

0 голосов
/ 11 марта 2019

Вам нужно правильно экранировать начало и конец строки pdfName, как показано здесь:

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

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

Apple обсуждает здесь , но код предназначен для Objective-C, поэтому он не показывает, как правильно заключить его в Swift с {}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...