Swift遍历hh:mm:ss:ms格式时间字符串移除无效零段简化显示
实现思路
你的核心需求是按时间分段处理字符串,而非逐个字符过滤,正确步骤如下:
- 首先将时间字符串按冒号分割为独立的时间分段数组
- 从数组头部移除所有连续的
00分段,直到遇到第一个非00分段 - 从数组尾部移除所有连续的
00分段,直到遇到第一个非00分段 - 剩余分段用冒号拼接即可得到目标结果
完整可运行代码
var gTimeString = "00:25:30:00" // 按冒号分割为分段数组 var timeComponents = gTimeString.components(separatedBy: ":") // 移除头部连续的00分段 while !timeComponents.isEmpty, timeComponents.first == "00" { timeComponents.removeFirst() } // 移除尾部连续的00分段 while !timeComponents.isEmpty, timeComponents.last == "00" { timeComponents.removeLast() } // 拼接为最终字符串 let gTimeStringReduced = timeComponents.joined(separator: ":") print(gTimeStringReduced) // 输入为00:25:30:00时输出25:30,输入为00:25:00:30时输出25:00:30
原有代码问题说明
你之前的代码错误是因为没有按分段规则处理,而是直接过滤所有0字符,会误删中间合法分段里的0,同时固定删除最后一个字符的逻辑也没有匹配业务规则,自然无法得到正确结果。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

