Swift中如何简洁实现首尾含空格/纯空白字符串无效校验
SwiftUI表单地址校验的简洁实现方案
你当前逐字段调用hasPrefix()/hasSuffix()的写法冗余度高,且没有覆盖「纯空白字符串判定为无效」的规则,直接通过集合批量校验+系统原生字符串处理方法就能简化实现,不需要逐个字段写判断逻辑。
核心实现逻辑
- 将所有需要校验的表单字段统一存入数组做批量处理,后续新增/删除校验字段只需要修改数组内容即可
- 借助
String原生的trimmingCharacters(in: .whitespacesAndNewlines)方法,一次性完成首尾空格、全空白内容的判定,不需要单独写前缀后缀判断 - 用
allSatisfy高阶函数判断所有字段是否符合校验规则,只要有一个字段不满足就直接返回校验失败
优化后代码
var isValidAddress: Bool { // 所有参与校验的地址字段,新增字段直接往数组里加即可 let fieldsToCheck = [name, street, city, country] return fieldsToCheck.allSatisfy { fieldContent in let trimmedContent = fieldContent.trimmingCharacters(in: .whitespacesAndNewlines) // 同时满足两个规则:1. 去掉首尾空白后不为空(拦截纯空白输入)2. 原内容首尾无多余空格 return !trimmedContent.isEmpty && fieldContent == trimmedContent } }
可选简化场景
如果你不需要严格禁止用户输入首尾空格,只是要拦截全空白的无效输入,可以把判断逻辑再简化,连首尾空格的相等判断都可以去掉:
var isValidAddress: Bool { let fieldsToCheck = [name, street, city, country] return fieldsToCheck.allSatisfy { !$0.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty } }
内容的提问来源于stack exchange,提问作者mvikt
相关产品推荐
相关产品推荐

