Как удалить символы из строки в Swift

Я ищу простой способ удалить 4 символа из «плиточной» строки «ment» из shuffledWord1.

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»?

Заранее благодарим за любую возможную помощь

10 голосов | спросил richc 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 01 Sep 2015 22:43:45 +0300 2015, 22:43:45

3 ответа


0

Swift 3 версия ответа Macondo2Seattle, что, я думаю, является самым элегантным решением.

extension String {
    func removing(charactersOf string: String) -> String {
        let characterSet = CharacterSet(charactersIn: string)
        let components = self.components(separatedBy: characterSet)
        return components.joined(separator: "")
    }
}
ответил Yaroslav 14 Jpm1000000pmSat, 14 Jan 2017 14:24:07 +030017 2017, 14:24:07
0
extension String
{
    func removeCharacters(characters: String) -> String
    {
        let characterSet = NSCharacterSet(charactersInString: characters)
        let components = self.componentsSeparatedByCharactersInSet(characterSet)
        let result = components.joinWithSeparator("")
        return result
    }
}
ответил Macondo2Seattle 18 FebruaryEurope/MoscowbThu, 18 Feb 2016 21:38:35 +0300000000pmThu, 18 Feb 2016 21:38:35 +030016 2016, 21:38:35
0

Swift 2.0:

extension String {
  func stringByRemovingOnce(chars: String) -> String {
    var cs = Set(chars.characters)
    let fd = characters.filter { c in
      cs.remove(c).map { _ in false } ?? true
    }
    return String(fd)
  }
}

"melpyoemtn".stringByRemovingOnce("ment") // "lpyoem"

Swift 1.2.

extension String {
  func stringByRemovingOnce(chars: String) -> String {
    var cs = Set(chars)
    let fd = filter(self) { c in
      cs.remove(c).map { _ in false } ?? true
    }
    return String(fd)
  }
}

"melpyoemtn".stringByRemovingOnce("ment") // "lpyoem"
ответил oisdk 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 02 Sep 2015 00:34:37 +0300 2015, 00:34:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132