我有字符串,类似于(495)_-___-____
。那是电话号码的掩码。我有一个名为InputMask
该库具有特定的规则来形成文本字段的掩码。所以,我需要将上面的掩码转换为{495[0]_[0][0][0]_[0][0][0]
,这将是正确的格式。
所以,我想知道我是否可以通过地图等功能实现这一点?我只需要将字符串(495)_-___-____
分解为字符数组。如果该字符等于“_”或“*”,那么当用户在文本字段上放置字符时,所以我简单地将其替换为[0]。其他字符是符号应保持不变。
如何使用map函数将此分割字符串执行到Array并形成一个新数组?
答案 0 :(得分:1)
这是一个解决方案:
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: "_")