我正在寻找一种从 shuffledWord1 中删除 tilesColored 字符串“ment”中的 4 个字符的简单方法。
var word1: String = "employment"
var shuffledWord1: String = "melpyoemtn"
var tilesColored: String = "ment"
var characters = Array(tilesColored) // gives ["m","e","n","t"]
let newWord1 = word1.StringByReplacingOccurencesOfString("\(characters[0])", withString:"") // gives "elpyoetn"
stringByReplacingOccurencesOfString 只允许检查 1 个字符并删除两个 m,那么我如何检查所有 4 个字符并只删除每个字符的一个实例以返回“melpyo”?
在此先感谢您提供的任何帮助
最佳答案
Swift 3+ 版本比之前的最佳答案具有更好的性能。 (因为我们没有将子字符串分成数组,所有子字符串都需要单独分配。)
这里仅适用于 unicode 标量级别。您可以将其直接粘贴到 playground 中。
import Foundation
extension String {
func removeCharacters(from forbiddenChars: CharacterSet) -> String {
let passed = self.unicodeScalars.filter { !forbiddenChars.contains($0) }
return String(String.UnicodeScalarView(passed))
}
func removeCharacters(from: String) -> String {
return removeCharacters(from: CharacterSet(charactersIn: from))
}
}
let str = "n1o d2i3g4i5t6s!!!789"
let t1 = str.removeCharacters(from: CharacterSet.decimalDigits.inverted)
print(t1) // will print: 123456789
let t2 = str.removeCharacters(from: "0123456789")
print(t2) // will print: no digits!!!
关于ios - 如何快速从字符串中删除字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32339717/