我发现了这个很棒的扩展程序,它删除了除引号中的字符之外的所有内容。
extension String.UnicodeScalarView {
var removeCharacters: String {
return String(filter(("cfh".unicodeScalars).contains))
}
}
print("abcd123efg".unicodeScalars.removeCharacters) // it prints “cf”, my desirable result is to make it print “abd123eg”
它打印“ cf”,我希望得到的结果是使其打印“ abd123eg”。 您能帮我将其反转以仅删除引号之间的字符并保留所有其他内容吗?
注意:识别(unicodeScalars)也很重要,因此请不要删除此部分。
答案 0 :(得分:4)
您需要取消对contains
的呼叫:
return String(filter { !"cfh".unicodeScalars.contains($0) })
答案 1 :(得分:1)
如果考虑使用extension
,请考虑@rmaddy,然后确保您考虑泛型并且在任何情况下都可以工作。就像您将“ cfh”保留为静态String
一样,如果您想删除“ abc”,那将无法正常工作。因此,这是修改后的版本:
extension String.UnicodeScalarView {
func removeCharacters(_ characters: String) -> String {
return String(filter { !characters.unicodeScalars.contains($0) })
}
}
用法: "abcd123efg".unicodeScalars.removeCharacters("cfh")
答案 2 :(得分:0)
为String创建扩展,如下所示
extension String {
func removeGroupOfCharacters(removalString : String) -> String {
// return an Array without the removal Characters
let filteredCharacters = Array(self).filter { !Array(removalString).contains($0) }
// build a String with the filtered Array
let filtered = String(filteredCharacters)
return filtered
}
}
override func viewDidLoad() {
super.viewDidLoad()
let unfiltered = "abcd123efg"
let removal = "cfh"
print(unfiltered.removeGroupOfCharacters(removalString: removal))
// => output will be like this "abd123eg\n"
}
答案 3 :(得分:-1)
这是一个基本示例。你可以那样做。
extension String {
return aString.replacingOccurrences(of: "X", with: "")
}