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

标签 arrays swift string

我有字符串,类似于 (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/

相关文章:

javascript - 2D 数组未转换为 D3 map 坐标

c++ - 复制 const char*

.net - .Net:空字符串不是空格字符吗?

Java 读取 JSON null

arrays - 如何遍历字典数组?

swift - NSPredicate 比较 Int32

swift - 如何将 NSDictionary 转换为字典?

arrays - 在 D' 共享库和 Pascal (Lazarus) 主机之间发送/接收字符串和数组

java - java 统计元素出现的频率

ios - 函数在完成处理程序完成之前完成它的执行