Padding a swift String for printing

前端 未结 6 661
迷失自我
迷失自我 2020-12-08 09:57

I\'m trying to print a list of Strings all padded to the same width.

In C, I would use something like printf(\"%40s\", cstr), where cstr is a C string.<

6条回答
  •  北海茫月
    2020-12-08 10:04

    extension RangeReplaceableCollection where Self: StringProtocol {
        func paddingToLeft(upTo length: Int, using element: Element = " ") -> SubSequence {
            return repeatElement(element, count: Swift.max(0, length-count)) + suffix(Swift.max(count, count-length))
        }
    }
    

    "123".paddingToLeft(upTo: 5)              //  "  123"
    "123".paddingToLeft(upTo: 5, using: "0")  //  "00123"
    "123".paddingToLeft(upTo: 3, using: "0")  //    "123"
    "$199.99".dropLast(3).paddingToLeft(upTo: 10, using: "_")  //  "______$199"
    

提交回复
热议问题