Как объединить строку с учетом RTL / LTR - PullRequest
2 голосов
/ 07 мая 2020

При объединении строк, как я могу сделать так, чтобы Swift уважал языковые настройки с написанием справа налево?

import Foundation

var leftString = "1"
let rightString = "2"

let concatString1 = "\(leftString)\(rightString)" // 12
let concatString2 = leftString + rightString // 12
let concatString3 = String(format: "%@%@", leftString, rightString) // 12
let concatString4 = [leftString, rightString].joined(separator: "") // 12
let concatString5 = leftString.appending(rightString) // 12

Как я могу получить 21 для языков RTL и 12 для языков LTR, в зависимости от в настройках локали пользовательского устройства?

Единственный ли способ указать формат, например "%2$@%1$@", в строковом файле?

1 Ответ

1 голос
/ 16 июня 2020

Вы можете создать для него функцию или расширение. Я использовал функцию в своем предыдущем проекте. Вы можете проверить, работает ли это для вас.

func getDirectionalString(leftString : String, rightString: String) -> String
{
    if(UIApplication.shared.userInterfaceLayoutDirection == UIUserInterfaceLayoutDirection.rightToLeft)
    {
        //RTL
        return "\(rightString)\(leftString)"
    }
    return "\(leftString)\(rightString)"
}
...