我怎样才能格式化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"