如何从字符串中删除特殊字符的答案 ? 不管用.
这是我得到的,它给了我一个错误
func removeSpecialCharsFromString(str: String) -> String {
let chars: Set<String> = Set(arrayLiteral: "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-*=(),.:!_")
return String(str.characters.filter { chars.contains($0) }) //error here at $0
}
Run Code Online (Sandbox Code Playgroud)
$ 0处的错误表示_Element(aka Character)无法转换为预期的参数类型'String'.
mat*_*att 55
像这样:
func removeSpecialCharsFromString(text: String) -> String {
let okayChars : Set<Character> =
Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-*=(),.:!_".characters)
return String(text.characters.filter {okayChars.contains($0) })
}
Run Code Online (Sandbox Code Playgroud)
以下是测试方法:
let s = removeSpecialCharsFromString("père") // "pre"
Run Code Online (Sandbox Code Playgroud)
Mak*_*zev 23
SWIFT 4:
func removeSpecialCharsFromString(text: String) -> String {
let okayChars = Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-=().!_")
return text.filter {okayChars.contains($0) }
}
Run Code Online (Sandbox Code Playgroud)
更清洁的方式:
extension String {
var stripped: String {
let okayChars = Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-=().!_")
return self.filter {okayChars.contains($0) }
}
}
Run Code Online (Sandbox Code Playgroud)
使用此扩展名如:
let myCleanString = "some.Text@#$".stripped
Run Code Online (Sandbox Code Playgroud)
输出:"some.Text"
Bis*_*sca 12
我认为更清洁的解决方案可能是这种方法:
extension String {
var alphanumeric: String {
return self.components(separatedBy: CharacterSet.alphanumerics.inverted).joined().lowercased()
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
尝试这个:
someString.removeAll(where: {$0.isPunctuation})
Run Code Online (Sandbox Code Playgroud)
在Swift 1.2中,
let chars = Set("abcde...")
Run Code Online (Sandbox Code Playgroud)
创建了一个包含给定字符串中所有字符的集合.在Swift 2.0中,必须这样做
let chars = Set("abcde...".characters)
Run Code Online (Sandbox Code Playgroud)
原因是字符串本身不再符合
SequenceType,您必须characters明确使用视图.
通过该更改,您的方法可以按预期编译和工作:
func removeSpecialCharsFromString(str: String) -> String {
let chars = Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-*=(),.:!_".characters)
return String(str.characters.filter { chars.contains($0) })
}
let cleaned = removeSpecialCharsFromString("ab€xy")
print(cleaned) // abxy
Run Code Online (Sandbox Code Playgroud)
备注: @Kametrixom建议只创建一次.因此,如果上述方法存在性能问题,您可以将该集的声明移到函数外部,或者将其设置为本地static:
func removeSpecialCharsFromString(str: String) -> String {
struct Constants {
static let validChars = Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890+-*=(),.:!_".characters)
}
return String(str.characters.filter { Constants.validChars.contains($0) })
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27552 次 |
| 最近记录: |