Swift – 如何在不从字符串中删除表情符号的情况下删除特殊字符?
Swift – How to remove special character without remove emoji from string?
如何在不删除表情符号的情况下从字符串中删除所有特殊字符?
我试过:
func removeSpecialCharsFromString(text: String) -> String {
let okayChars : Set<Character> =
Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890-& ".characters)
return String(text.characters.filter {okayChars.contains([=11=]) })
}
– 但此函数还会从字符串中删除表情符号。
预期结果:
"Hello guys !? Need some money $ "
实际结果:
"Hello guys Need some money "
这里的问题是如何判断一个字符是不是表情符号。 Swift 有一个方便的 isEmoji
方法,我们可以使用。
这是使用 isEmoji
方法更新后的函数:
func removeSpecialCharacters(from text: String) -> String {
let okayChars = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890-& ")
return String(text.unicodeScalars.filter { okayChars.contains([=10=]) || [=10=].properties.isEmoji })
}
以防万一有人要在 Playground 中测试上面的代码:
let input = "Hello guys !? Need some money $ "
let output = removeSpecialCharacters(from: input)
print(output) // Prints: Hello guys Need some money
您可以使用下面的扩展来使您的句子按照所需的输出变得完美。
extension String {
var condensedWhitespace: String {
let components = self.components(separatedBy: NSCharacterSet.whitespacesAndNewlines)
return components.filter { ![=10=].isEmpty }.joined(separator: " ")
}
func removeSpecialCharacters() -> String {
let okayChars = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890 ")
return String(self.unicodeScalars.filter { okayChars.contains([=10=]) || [=10=].properties.isEmoji })
}
}
示例。
let input = "Hello guys !? Need some money $ "
print(input.removeSpecialCharacters().condensedWhitespace)
// Hello guys Need some money
如何在不删除表情符号的情况下从字符串中删除所有特殊字符?
我试过:
func removeSpecialCharsFromString(text: String) -> String {
let okayChars : Set<Character> =
Set("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890-& ".characters)
return String(text.characters.filter {okayChars.contains([=11=]) })
}
– 但此函数还会从字符串中删除表情符号。
预期结果:
"Hello guys !? Need some money $ "
实际结果:
"Hello guys Need some money "
这里的问题是如何判断一个字符是不是表情符号。 Swift 有一个方便的 isEmoji
方法,我们可以使用。
这是使用 isEmoji
方法更新后的函数:
func removeSpecialCharacters(from text: String) -> String {
let okayChars = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890-& ")
return String(text.unicodeScalars.filter { okayChars.contains([=10=]) || [=10=].properties.isEmoji })
}
以防万一有人要在 Playground 中测试上面的代码:
let input = "Hello guys !? Need some money $ "
let output = removeSpecialCharacters(from: input)
print(output) // Prints: Hello guys Need some money
您可以使用下面的扩展来使您的句子按照所需的输出变得完美。
extension String {
var condensedWhitespace: String {
let components = self.components(separatedBy: NSCharacterSet.whitespacesAndNewlines)
return components.filter { ![=10=].isEmpty }.joined(separator: " ")
}
func removeSpecialCharacters() -> String {
let okayChars = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLKMNOPQRSTUVWXYZ1234567890 ")
return String(self.unicodeScalars.filter { okayChars.contains([=10=]) || [=10=].properties.isEmoji })
}
}
示例。
let input = "Hello guys !? Need some money $ "
print(input.removeSpecialCharacters().condensedWhitespace)
// Hello guys Need some money