Ios 字符串替换电话号码
我从“联系人”中导入电话号码并保存在Ios 字符串替换电话号码,ios,iphone,swift,nsstring,import-contacts,Ios,Iphone,Swift,Nsstring,Import Contacts,我从“联系人”中导入电话号码并保存在NSString中。 此字符串包含空格,我尝试使用以下方法删除它们: numero = numero.stringByReplacingOccurrencesOfString(" ", withString: "") 这种方法行不通 产量没有变化 日志 您是否尝试过: let str = "XX XX XX XX XX" let separated = str.componentsSeparatedByCharactersInSet(NSChar
NSString
中。
此字符串包含空格,我尝试使用以下方法删除它们:
numero = numero.stringByReplacingOccurrencesOfString(" ", withString: "")
这种方法行不通
产量没有变化
日志 您是否尝试过:
let str = "XX XX XX XX XX"
let separated = str.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
let finalStr = "".join(separated)
NSString
不是String
,因此您应该使用:
numero = ((numero as String).stringByReplacingOccurrencesOfString(" ", withString: "") as NSString)
我怀疑字符串中的空格字符实际上不是空格。尝试在
NSLog(string)
之后添加此项,以查看字符串中字符的unicode标量值:
for uni in (stringa as String).unicodeScalars {
println("\(uni) = \(uni.value)")
}
“(327)124-3503”的预期输出为:
根据您的评论,您的共享空间的值是160而不是32。您可以通过以下方式删除该选项:
numero = stringa.stringByReplacingOccurrencesOfString(String(Character(UnicodeScalar(160))), withString: "")
更新:Xcode 7.2•Swift 2.1.1
extension String {
var numbersOnly: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "1234567890")
.invertedSet)
.joinWithSeparator("")
}
var numbersExempt: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "1234567890"))
.joinWithSeparator("")
}
var charactersOnly: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet).joinWithSeparator("")
}
var charactersExempt: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")).joinWithSeparator("")
}
func keep(keepIt: String) -> String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: keepIt).invertedSet).joinWithSeparator("")
}
func exclude(excludeIt: String) -> String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: excludeIt)).joinWithSeparator("")
}
}
let phoneNumber = "+1 (555) 555 - 5555".numbersOnly
print(phoneNumber) // "15555555555"
let excludePlusMinus = "+1 (555) 555-5555".exclude("+-") // "1 (555) 5555555"
let keepWhatever = "+1 (555) 555-5555".keep("()-+") // "+()-"
您还可以使用函数仅减去经过一些调整的空格。试着这样做:
func sostituisci(stringa: String) -> String {
return stringa.stringByReplacingOccurrencesOfString(" ", withString: "")
}
sostituisci("1 234 567 8901") // "12345678901"
或者像一个扩展:
extension String {
var sostituisci: String {
return stringByReplacingOccurrencesOfString(" ", withString: "")
}
}
let phoneNumber2 = "1 234 567 8901".sostituisci
根据记录,基金会的类型不同于Swift的类型。Swift中的
String
不是NSString
当“它不工作”时会发生什么?字符串是否保持不变?你有错误吗?这对我来说很好,因为numero
声明为String
或NSString
。numero
是否用var
或let
声明?字符串未更改。numero是否声明为varoption单击numero
。上面说什么?另外,在您尝试更改之前,能否向我们显示numero
的值?第行错误:let finalStr=“”.join(分隔)->“如果您将let finalStr=“”.join(分隔)
替换为let finalStr=(“”作为字符串)。join(分隔)
?我使用你的方法时的日志:Happyricacaria[33497:3132714](327)124-3503(=403=512=507=55)=41=1601=492=504=52-=453=515=530=483=51我知道你已经接受了答案。我只是想让你知道为什么你的原始代码不起作用。你的空间不是真正的空间(ASCII 32)但它的值为160。请参见上面的更新,了解如何替换它。您接受的答案非常好,因此我将其作为接受的答案。投票结果非常有助于理解由CharactersInSet操作的组件的功能。
extension String {
var numbersOnly: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "1234567890")
.invertedSet)
.joinWithSeparator("")
}
var numbersExempt: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "1234567890"))
.joinWithSeparator("")
}
var charactersOnly: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet).joinWithSeparator("")
}
var charactersExempt: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")).joinWithSeparator("")
}
func keep(keepIt: String) -> String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: keepIt).invertedSet).joinWithSeparator("")
}
func exclude(excludeIt: String) -> String {
return componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: excludeIt)).joinWithSeparator("")
}
}
let phoneNumber = "+1 (555) 555 - 5555".numbersOnly
print(phoneNumber) // "15555555555"
let excludePlusMinus = "+1 (555) 555-5555".exclude("+-") // "1 (555) 5555555"
let keepWhatever = "+1 (555) 555-5555".keep("()-+") // "+()-"
func sostituisci(stringa: String) -> String {
return stringa.stringByReplacingOccurrencesOfString(" ", withString: "")
}
sostituisci("1 234 567 8901") // "12345678901"
extension String {
var sostituisci: String {
return stringByReplacingOccurrencesOfString(" ", withString: "")
}
}
let phoneNumber2 = "1 234 567 8901".sostituisci