Quel est le moyen le plus efficace de supprimer tous les espaces, \n
et \r
d'une chaîne dans Swift?
J'ai essayé:
for character in string.characters {
}
Mais c'est un peu gênant.
Swift 4:
let text = "This \n is a st\tri\rng"
let test = String(text.filter { !" \n\t\r".contains($0) })
Sortie:
print(test) // Thisisastring
Alors que la réponse de Fahri est Nice, je préfère que ce soit pur Swift;)
Par souci d’exhaustivité, c’est la version de Regular Expression.
let string = "What is the most efficient way to remove all the spaces and \n \r \tin a String in Swift"
let stringWithoutWhitespace = string.replacingOccurrences(of: "\\s", with: "", options: .regularExpression)
// -> "WhatisthemostefficientwaytoremoveallthespacesandinaStringinSwift"
Vous pouvez utiliser NSCharacterSet
whitespaceAndNewlineCharacterSet
pour séparer votre chaîne et utiliser la méthode joinWithSeparator()
pour la concaténer à nouveau comme suit:
let textInput = "Line 1 \n Line 2 \n\r"
let whitespaceAndNewlineCharacterSet = NSCharacterSet.whitespaceAndNewlineCharacterSet()
let components = textInput.componentsSeparatedByCharactersInSet(whitespaceAndNewlineCharacterSet)
let result = components.joinWithSeparator("") //"Line1Line2"
Vous pouvez également étendre String pour qu'il soit plus facile de l'utiliser n'importe où dans votre code:
extension String {
var removingWhitespacesAndNewlines: String {
return componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).joinWithSeparator("")
}
}
éditer/mettre à jour:
Swift3 ou ultérieur
let textInput = "Line 1 \n Line 2 \n\r"
let result = textInput.components(separatedBy: .whitespacesAndNewlines).joined() //"Line1Line2"
extension String {
var removingWhitespacesAndNewlines: String {
return components(separatedBy: .whitespacesAndNewlines).joined()
}
}
let textInput = "Line 1 \n Line 2 \n\r"
let result = textInput.removingWhitespacesAndNewlines //"Line1Line2"
Supposons que vous ayez cette chaîne: "quelques mots\nanother Word\n\r voici quelque chose\tand quelque chose comme\rmdjsbclsdcbsdilvb\n\Rand enfin ceci :)"
voici comment supprimer tout l’espace possible:
let possibleWhiteSpace:NSArray = [" ","\t", "\n\r", "\n","\r"] //here you add other types of white space
var string:NSString = "some words \nanother Word\n\r here something \tand something like \rmdjsbclsdcbsdilvb \n\Rand finally this :)"
print(string)// initial string with white space
possibleWhiteSpace.enumerateObjectsUsingBlock { (whiteSpace, idx, stop) -> Void in
string = string.stringByReplacingOccurrencesOfString(whiteSpace as! String, withString: "")
}
print(string)//resulting string
Faites-moi savoir si cela répond à votre question :)
Pour Swift 4:
let myString = "This \n is a st\tri\rng"
let trimmedString = myString.components(separatedBy: .whitespacesAndNewlines).joined()
Utilisez ceci:
let aString: String = "This is my string"
let newString = aString.stringByReplacingOccurrencesOfString(" ", withString: "", options:[], range: nil)
print(newString)
Sortie : Cette chaîne
Swift 4 :
let string = "Test\n with an st\tri\rng"
print(string.components(separatedBy: .whitespacesAndNewlines))
// Result: "Test with an string"