Swift, как сделать строку выровненной вправо

Как сделать строку выровненной вправо? На данный момент я знаю, как выровнять строку по левому краю, используя stringByPaddingToLength, Любая идея для выравнивания вправо?

1 ответ

Возможная реализация (пояснения в строке):

extension String {
    func stringByLeftPaddingToLength(newLength : Int) -> String {
        let length = self.characters.count
        if length < newLength {
            // Prepend `newLength - length` space characters:
            return String(count: newLength - length, repeatedValue: Character(" ")) + self
        } else {
            // Truncate to the rightmost `newLength` characters:
            return self.substringFromIndex(startIndex.advancedBy(length - newLength))
        }
    }
}

Пример использования:

let s = "foo"
let padded = s.stringByLeftPaddingToLength(6)
print(">" + padded + "<")
// >   foo<

Обновление для Swift 3:

extension String {
    func stringByLeftPaddingTo(length newLength : Int) -> String {
        let length = self.characters.count
        if length < newLength {
            // Prepend `newLength - length` space characters:
            return String(repeating: " ", count: newLength - length) + self
        } else {
            // Truncate to the rightmost `newLength` characters:
            return self.substring(from: self.index(endIndex, offsetBy: -newLength))
        }
    }
}
Другие вопросы по тегам