Arrays 消除数组中的空格。它不工作
我从一个矩阵联系人那个里得到这个数字,每个人都有一个人的号码,但我的问题是我想要原始的号码,以便我能和另一个矩阵匹配Arrays 消除数组中的空格。它不工作,arrays,swift,Arrays,Swift,我从一个矩阵联系人那个里得到这个数字,每个人都有一个人的号码,但我的问题是我想要原始的号码,以便我能和另一个矩阵匹配 for a in contacts { let content: String = a.phone let result1 = content.stringByReplacingOccurrencesOfString("(", withString:"") let result2 = result1.string
for a in contacts
{
let content: String = a.phone
let result1 = content.stringByReplacingOccurrencesOfString("(", withString:"")
let result2 = result1.stringByReplacingOccurrencesOfString(")", withString:"")
let result3 = result2.stringByReplacingOccurrencesOfString("-", withString:"")
let result4 = result3.replace(" ", replacement: "")
println(result4)
// newNames.append(result4)
//contador=contador+1
}
//result[555 555,999 3188,999 1]
那么,为什么不消除空格呢?为什么如果其他条件运行良好,我也会使用:
let result4 = result3.stringByReplacingOccurrencesOfString(" ", withString: "")
为什么它不起作用
//结果[555 555999 3188999 1]您使用的是不同的API,
replace()
使用工作API,stringByReplacingOccurrencesOfString()
锁链
请注意,您可以在Swift中使用链条,这会更加优雅
let cleanNumber = content
.stringByReplacingOccurrencesOfString("(", withString:"")
.stringByReplacingOccurrencesOfString(")", withString:"")
.stringByReplacingOccurrencesOfString("-", withString:"")
.stringByReplacingOccurrencesOfString(" ", withString:"")
过滤和映射
另外,请注意更加简洁的过滤器
和映射
API
let content = "(459) 333-4938"
let cleanNumber = content.characters.filter {
![" ", "-", "(", ")"].contains($0)
}.map { String($0) }.joinWithSeparator("")
// "4593334938"
NSCharacterSet
还有旧的NSCharacterSet
技巧:
let illegal = NSCharacterSet(charactersInString: "1234567890").invertedSet
let cleanNumber = content
.componentsSeparatedByCharactersInSet(illegal)
.joinWithSeparator("")
// "4593334938"
您可以尝试扩展
String
,以包含用于删除字符列表的函数
对于Swift 1.2(非2):
OP确实说他尝试了
让result4=result3.stringByReplacingOccurrencesOfString(“,with string:”)
但没有成功。这是真的,我使用了:“stringByReplacingOccurrencesOfString()”,它没有成功是的,但从发布的代码中我推断OP没有使用该函数。实际上我已经使用了“stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())“而且它也不起作用。是的,修剪只在最后起作用。我上面的代码在操场上测试过。你的空格字符可能不是空格。看:非常感谢!!!它的工作原理我可以问一下,为什么会有否决票?在Swift 2中尝试一下,有一个错误:不能用类型为“(String,(Character)->Bool)”的参数列表调用“filter”啊,谢谢你指出,我还没有真正使用过2.0,我会把它添加到答案中。Swift 2.0即将推出,Xcode GM可用。我已经看到我的Swift 1.x答案被否决,因为它们不适用于2.0。找到我所有的快速答案并添加2.0答案将是一件非常痛苦的事情。
extension String {
func removeCharacters(chars: [Character]) -> String {
return String(filter(self) {find(chars, $0) == nil})
}
}
let chars: [Character] = ["(", ")", "-", " "]
let result = content.removeCharacters(chars)