web-dev-qa-db-fra.com

Comment supprimer tous les espaces et\n\r dans une chaîne?

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.

14
Tauta

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;)

53
Eendje

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"
8
vadian

Vous pouvez utiliser NSCharacterSetwhitespaceAndNewlineCharacterSet 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"
7
Leo Dabus

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 :) 

1

Pour Swift 4:

let myString = "This \n is a st\tri\rng"
let trimmedString = myString.components(separatedBy: .whitespacesAndNewlines).joined()
0
user9060380

Utilisez ceci:

let aString: String = "This is my string"
let newString = aString.stringByReplacingOccurrencesOfString(" ", withString: "", options:[], range: nil)
print(newString)

Sortie : Cette chaîne

0
iAnurag

Swift 4 :

let string = "Test\n with an st\tri\rng"
print(string.components(separatedBy: .whitespacesAndNewlines))
// Result: "Test with an string"
0
Haroldo Gondim