Swift, как выровнять строку по правому краю

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


person Janice Zhan    schedule 14.05.2016    source источник
comment
Возможный дубликат заполнения строки слева   -  person ozgur    schedule 14.05.2016
comment
@ozgur Я хочу, чтобы он выровнялся по правому краю, а не по левому.   -  person Janice Zhan    schedule 14.05.2016
comment
stringByPaddingToLength колодки уже справа. Ссылка, которой я поделился, объясняет, как сделать наоборот (добавить влево), используя stringByPaddingToLength.   -  person ozgur    schedule 14.05.2016
comment
смотрит в будущее swiftpm install leftpad   -  person jtbandes    schedule 14.05.2016
comment
Не могли бы вы привести пример желаемых результатов?   -  person Julien Quere    schedule 14.05.2016


Ответы (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))
        }
    }
}
person Martin R    schedule 14.05.2016