我有字符串,类似于 (495)_-___-____
。那是电话号码的掩码。我有一个名为 InputMask 的库
该库有特定的规则来形成文本字段的掩码。所以,我需要以某种方式将上面的掩码转换为 {495[0]_[0][0][0]_[0][0][0]
,这将是正确的格式。
那么,我想知道我是否可以通过像 map 这样的功能来实现这一点?我只需要将字符串 (495)_-___-____
拆分为字符数组。如果该字符等于“_”或“*”,即用户将在文本字段上放置字符时的位置,那么我只需将其替换为 [0]。其他字符是符号应保持不变。
如何将字符串拆分为Array并使用map函数形成一个新数组?
最佳答案
解决方法:
let mask = "(495)_-___-____"
// use mask.map in swift 4
let strings: [String] = mask.characters.map {
char in
if char == "_" {
return "[0]"
} else if char == "-" {
return "_"
} else {
return char.description
}
}
let finalResult = "{" + strings.joined()
如您所见,代码非常简单。 map
闭包中的代码很长,因此循环可能看起来更好(IMO)。
这是另一种不使用高阶函数的解决方案,但 IMO 更简单:
"{" + mask.replacingOccurrences(of: "_", with: "[0]")
.replacingOccurrences(of: "-", with: "_")
关于arrays - 将字符串拆分为数组并对每个字符 Swift 执行特定操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46418778/