我有一组字符串中允许的字符:
var characterSet:NSCharacterSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ")我希望从字符串中删除任何其他字符,以便两个未格式化的数据可以被视为相等,如下所示:
"American Samoa".lowercaseString == "american_samoa1".lowercaseString这些转换后的字符串的小写版本是"americansamoa"。
发布于 2015-03-02 21:56:16
让我们为这个函数编写一个函数(在Swid1.2中)。
func stripOutUnwantedCharactersFromText(text: String, set characterSet: Set<Character>) -> String {
return String(filter(text) { set.contains($0) })
}你可以这样称呼它:
let text = "American Samoa"
let chars = Set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
let strippedText = stripOutUnwantedCharactersFromText(text, set: chars)纯粹的敏捷。嗯。
发布于 2015-03-02 21:44:24
你走在正确的轨道上。但是您可以在您的invertedSet上使用NSCharSet。这意味着允许在NSCharSet中设置的每个字符,因为这样做更容易。否则,您需要检查不想允许的每个字符,这比设置允许的字符多得多:
var charSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet
var unformatted = "american_samoa1"
var cleanedString = join("", unformatted.componentsSeparatedByCharactersInSet(charSet))
println(cleanedString) // "americansamoa"如您所见,我在创建的数组上使用了join方法。我这么做是因为你真的想要一个字符串,否则你就会有一个字符串数组。
发布于 2016-08-16 05:08:45
更新以下SWIFT2.3示例以替换join方法。
let charSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet
let unformatted = "american_samoa1"
let cleanedString = unformatted.componentsSeparatedByCharactersInSet(charSet)).joinWithSeparator("")
print(cleanedString) // "americansamoa"https://stackoverflow.com/questions/28819779
复制相似问题