今天同事群有个同事在问
兄弟们, 对于任意长度的数字字符串,比如 123 123456
希望按照4位 4位空格展示,比如1234 56
除了手写substring截取,有别的更简单的方法么?
大家各有做法,如果是你,你会怎么做呢?
我想了想,这个用可变字符串操作,计算插入空格后的总长度,计算要插入的字符位置,就可以了,这样比较高效。再写成字符串的扩展,用起来就更加方便了。
上代码:
extension String {
func split(by character:Character ,spaceCount:Int) -> String {
if self.count <= spaceCount {
return self
}
let spacecount = self.count % spaceCount == 0 ? count/spaceCount - 1 : count / spaceCount
var str = self;
for i in 1...spacecount {
let positon = i * spaceCount + (i-1);
str.insert(character, at: str.index(str.startIndex, offsetBy: positon))
}
return str
}
}
进行测试验证:

image.png