首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将特殊字符从字符串中删除?

如何将特殊字符从字符串中删除?
EN

Stack Overflow用户
提问于 2015-03-02 21:30:28
回答 5查看 8.9K关注 0票数 2

我有一组字符串中允许的字符:

代码语言:javascript
复制
var characterSet:NSCharacterSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ")

我希望从字符串中删除任何其他字符,以便两个未格式化的数据可以被视为相等,如下所示:

代码语言:javascript
复制
"American Samoa".lowercaseString == "american_samoa1".lowercaseString

这些转换后的字符串的小写版本是"americansamoa"

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-03-02 21:56:16

让我们为这个函数编写一个函数(在Swid1.2中)。

代码语言:javascript
复制
func stripOutUnwantedCharactersFromText(text: String, set characterSet: Set<Character>) -> String {
    return String(filter(text) { set.contains($0) })
}

你可以这样称呼它:

代码语言:javascript
复制
let text = "American Samoa"
let chars = Set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
let strippedText = stripOutUnwantedCharactersFromText(text, set: chars)

纯粹的敏捷。嗯。

票数 9
EN

Stack Overflow用户

发布于 2015-03-02 21:44:24

你走在正确的轨道上。但是您可以在您的invertedSet上使用NSCharSet。这意味着允许NSCharSet中设置的每个字符,因为这样做更容易。否则,您需要检查不想允许的每个字符,这比设置允许的字符多得多:

代码语言:javascript
复制
var charSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet
var unformatted = "american_samoa1"
var cleanedString = join("", unformatted.componentsSeparatedByCharactersInSet(charSet))

println(cleanedString) // "americansamoa"

如您所见,我在创建的数组上使用了join方法。我这么做是因为你真的想要一个字符串,否则你就会有一个字符串数组。

票数 3
EN

Stack Overflow用户

发布于 2016-08-16 05:08:45

更新以下SWIFT2.3示例以替换join方法。

代码语言:javascript
复制
let charSet = NSCharacterSet(charactersInString: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet
let unformatted = "american_samoa1"
let cleanedString = unformatted.componentsSeparatedByCharactersInSet(charSet)).joinWithSeparator("")

print(cleanedString) // "americansamoa"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28819779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档