我怎样才能格式化stringalignment
首先,我发现我很容易格式化其他types,例如Int,例如:
let i = 12345 let s = String(format: "%-10d", 12345) //then s = "12345 "
右边的几个空间正是我所需要的!
但是当我尝试实现它为一个string(我是对的,如果我使用“%@”?)
let str = "12345" let s = String(format: "%-10@", str) //then s = "12345" rather than "12345 "
我怎么能做到这一点,以达到同样的结果?
你可以使用String方法stringByPaddingToLength()
let str = "12345" let paddedString = str.stringByPaddingToLength(10, withString: " ", startingAtIndex: 0) // "12345 "
如果你想添加主要字符到你的string你可以尝试创build一个自定义的扩展如下:
extension String { func stringByAppendingLeadingCharacterToLength(newLenght: Int, withCharacter: Character) -> String { return newLenght-characters.count > 0 ? String(count: newLenght-characters.count, repeatedValue: withCharacter) + self : self } } let strNumbers = "12345" let paddedString1 = strNumbers.stringByAppendingLeadingCharacterToLength(10, withCharacter: "0") // "0000012345"
Xcode 8.2•Swift 3.0.2
extension String { func paddingLeft(with character: Character, maxLength: Int) -> String { return maxLength - characters.count > 0 ? String(repeating: String(character), count: maxLength - characters.count) + self : self } }
用法:
"12345".paddingLeft(with: "0", maxLength: 10) // "0000012345"