web-dev-qa-db-fra.com

Swift - Supprime le caractère de la chaîne

J'ai une chaîne qui est "facultatif (" 5 ")". J'ai besoin de supprimer le "" entourant le 5. J'ai supprimé le "Facultatif" en faisant:

text2 = text2.stringByReplacingOccurrencesOfString("Optional(", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)

J'ai des difficultés à supprimer les caractères "car ils désignent la fin d'une chaîne dans le code.

57
Calan Williams

Swift utilise une barre oblique inverse pour échapper aux guillemets. Voici la liste des caractères spéciaux échappés dans Swift:

  • \0 (caractère nul)
  • \\ (barre oblique inverse)
  • \t (onglet horizontal)
  • \n (saut de ligne)
  • \r (retour chariot)
  • \" (guillemet double)
  • \' (guillemet simple)

Cela devrait fonctionner:

text2 = text2.replacingOccurrences(of: "\\", with: "", options: NSString.CompareOptions.literal, range: nil)
131
dasblinkenlight

Swift 3 et Swift 4:

text2 = text2.textureName.replacingOccurrences(of: "\"", with: "", options: NSString.CompareOptions.literal, range:nil)

Les derniers documents mis à jour vers Swift 3.0.1 ont:

  • Caractère nul (\0)
  • Barre oblique inverse (\\)
  • Onglet horizontal (\t)
  • Retour à la ligne (\n)
  • Retour chariot (\r)
  • Devis double (\")
  • Devis unique (\')
  • Unicode scalar (\u{n}), où n est compris entre un et huit chiffres hexadécimaux

Si vous avez besoin de plus de détails, vous pouvez jeter un oeil à la documentation officielle ici

44
Alessandro Ornano

Voici la réponse mise à jour Swift 3

  var editedText = myLabel.text?.replacingOccurrences(of: "\", with: "")
Null Character (\0)
Backslash (\\)
Horizontal Tab (\t)
Line Feed (\n)
Carriage Return (\r)
Double Quote (\")
Single Quote (\')
Unicode scalar (\u{n})
20
Chathuranga Silva

Pour supprimer l'option, vous devez uniquement le faire.

println("\(text2!)")

cause si vous n'utilisez pas "!" il prend la valeur optionnelle de text2

Et pour supprimer "" de 5, vous devez le convertir en NSInteger ou NSNumber easy peasy. Il a "" cause sa une chaîne.

9
Norolim

J'ai finalement eu cela pour travailler dans la cour, ayant plusieurs personnages que j'essaie de supprimer d'une chaîne:

var otherstring = "lat\" : 40.7127837,\n"
var new = otherstring.stringByTrimmingCharactersInSet(NSCharacterSet.init(charactersInString: "la t, \n \" ':"))
count(new) //result = 10
println(new) 
//yielding what I'm after just the numeric portion 40.7127837
6
Getafix

Comme le dit Martin R, votre chaîne "Facultatif (" 5 ")" ressemble à une erreur.

dasblinkenlight vous répond alors que c'est correct, mais pour les futurs lecteurs, j'essaierai d'ajouter du code alternatif comme:

if let realString = yourOriginalString {
    text2 = realString
} else {
    text2 = ""
}

dans votre exemple, text2 ressemble à String et il est peut-être déjà défini sur "", mais il semblerait que vous ayez une chaîne yourOriginalString de type Optional (String) quelque part où elle n'a pas été convertie ou utilisée correctement.

J'espère que cela peut aider certains lecteurs.

4
Dam

Si vous souhaitez supprimer plus de caractères, par exemple "a", "A", "b", "B", "c", "C" de la chaîne, vous pouvez le faire de la manière suivante:

someString = someString.replacingOccurrences(of: "[abc]", with: "", options: [.regularExpression, .caseInsensitive])
0
Grzegorz R. Kulesza

Si vous obtenez la sortie Optional(5) lors de l’essai d’imprimer la valeur de 5 dans un fichier optionnel Int ou String , vous devez d’abord décompresser la valeur:

if let value = text {
    print(value)
}

Maintenant, vous avez la valeur sans la chaîne "Facultative" que Swift ajoute lorsque la valeur n'est pas décompressée auparavant.

0
Ale Mohamad

Vous avez instancié text2 en tant que Facultatif (exemple: var text2: String?) . C'est pourquoi vous recevez Facultatif ("5") dans votre chaîne. emporte le? et remplacez par:

var text2: String = ""
0

Disons que vous avez une chaîne:

var string = "potatoes + carrots"

Et vous voulez remplacer le mot "pommes de terre" dans cette chaîne par "tomates"

string = string.replacingOccurrences(of: "potatoes", with: "tomatoes", options: NSString.CompareOptions.literal, range: nil)

Si vous imprimez votre chaîne, ce sera désormais: "tomatoes + carrots"

Si vous souhaitez supprimer les pommes de terre Word de la piqûre, vous pouvez utiliser:

string = string.replacingOccurrences(of: "potatoes", with: "", options: NSString.CompareOptions.literal, range: nil)

Si vous voulez utiliser d'autres caractères dans votre aiguillon, utilisez:

  • Caractère nul (\ 0)
  • Barre oblique inverse (\)
  • Onglet horizontal (\ t)
  • Saut de ligne (\ n)
  • Retour de chariot (\ r)
  • Double citation (\")
  • Simple citation (\')

Exemple:

string = string.replacingOccurrences(of: "potatoes", with: "dog\'s toys", options: NSString.CompareOptions.literal, range: nil)

Sortie: "dog's toys + carrots"

0
Mini Official