将字符串拆分为数组并对每个字符执行特定操作Swift
我有字符串,类似于(495)_-___-____
。这是电话号码的掩码。我有文件名为InputMask将字符串拆分为数组并对每个字符执行特定操作Swift
该库有特定的规则来形成文本字段的掩码。所以,我需要一些将以上面具转换为{495[0]_[0][0][0]_[0][0][0]
,这将是正确的格式。
所以,我不知道我是否可以实现这一点与地图功能?我只需要将字符串(495)_-___-____
分解为字符数组。如果该字符等于用户在文本字段上放置字符时所处的“_”或“*”,那么我简单地将其替换为[0]。其他字符是符号应该保持不变。
如何执行此拆分字符串数组和使用映射函数形成一个新的数组?
这里是一个解决方案:
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)。
这里是不使用高阶函数另一种解决方案,但国际海事组织是简单的:
"{" + mask.replacingOccurrences(of: "_", with: "[0]")
.replacingOccurrences(of: "-", with: "_")
同意,如果解决'地图'不是解决问题的绝对标准,解决它使用简单的'for'循环会更有意义。 – prabodhprakash
@prabodhprakash是我同意,但我想我可以使它更简单,更清洁通过使用地图 –
@Sweeper感谢它的工作,但我仍然想要解决高阶函数,因为如果你掌握它,这将节省您的时间,将少一些码。 –
你可以做一个新的字符串,而遍历这个字符串剧中人物。当你遇到一个角色时,你可以应用你的规则 – prabodhprakash
你确定在开始时有一个不平衡的'{'? – Sweeper
事实上,如果'_'的位置是恒定的,那么您可以在该位置上执行掩码。 – prabodhprakash