Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 字符串替换电话号码_Ios_Iphone_Swift_Nsstring_Import Contacts - Fatal编程技术网

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