将字符串拆分为数组并为每个字符Swift执行特定操作

时间:2017-09-26 05:55:13

标签: arrays swift string

我有字符串,类似于(495)_-___-____。那是电话号码的掩码。我有一个名为InputMask

的图书馆

该库具有特定的规则来形成文本字段的掩码。所以,我需要将上面的掩码转换为{495[0]_[0][0][0]_[0][0][0],这将是正确的格式。

所以,我想知道我是否可以通过地图等功能实现这一点?我只需要将字符串(495)_-___-____分解为字符数组。如果该字符等于“_”或“*”,那么当用户在文本字段上放置字符时,所以我简单地将其替换为[0]。其他字符是符号应保持不变。

如何使用map函数将此分割字符串执行到Array并形成一个新数组?

1 个答案:

答案 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: "_")