提问人:Dimpy-iRoid 提问时间:7/19/2023 最后编辑:Dimpy-iRoid 更新时间:11/21/2023 访问量:42
如何在 Swift iOS 中根据 UILabel 中的条件截断字符串的中间部分?
How do I Truncate middle of String based on conditions in UILabel in Swift iOS?
问:
我有一个这样的字符串: AU 6,7,8,9,10,11,...,20,21,22,23,24,25 参考此图片
我只需要填充 8 种尺寸。这个尺寸没有限制,它们也可以超过 20 或 50。 如果只有 8 种尺寸可用,请显示 AU 6、7、8、9、10、11、12、13 如果超过 8 个尺寸,则显示 AU 6、7、8、9、10、11 ...25.仅在最后尺寸前面有三个点。
我给 UILabel 提供了 1 行数,Link Break 是 Truncate Middle。
我是 swift 的新手,我不知道如何实现这一目标?我将不胜感激您的帮助。谢谢!
答:
0赞
lazarevzubov
7/19/2023
#1
我认为仅通过SwiftUI无法实现该要求。从大小数组(整数)中生成字符串的算法应该会有所帮助。例如:
func makeSizesString(sizesArray: [Int]) -> String {
if (sizesArray.count <= 8) {
sizesArray.map { "\($0)" }.joined(separator: ", ")
} else {
sizesArray[...5].map { "\($0)" }.joined(separator: ", ") + " ... \(sizesArray[sizesArray.count - 1])"
}
}
print(makeSizesString(sizesArray: [1, 2, 3, 4, 5, 6, 7])) // 1, 2, 3, 4, 5, 6, 7
print(makeSizesString(sizesArray: [1, 2, 3, 4, 5, 6, 7, 8])) // 1, 2, 3, 4, 5, 6, 7, 8
print(makeSizesString(sizesArray: [1, 2, 3, 4, 5, 6, 7, 8, 9])) // 1, 2, 3, 4, 5, 6 ... 9
print(makeSizesString(sizesArray: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])) // 1, 2, 3, 4, 5, 6 ... 10
评论
1赞
Dimpy-iRoid
7/19/2023
这正是我想要的。真的很感谢你的时间。谢谢!
0赞
lazarevzubov
7/19/2023
NP的。祝您编码愉快。
评论