J'ai besoin de vérifier si un personnage est un espace, comment faites-vous cela?

for (index, val) in (self.textField.text?.enumerated())! {
  if val == " " { // How?
    if index % 2 == 0 {
      // ...
    }
  }
}
1
Chris G. 15 nov. 2017 à 12:19

4 réponses

Meilleure réponse

Utilisez NSCharacterSet pour vérifier les espaces blancs, y compris \ n, \ t, etc.

NSCharacterSet.whitespaces.contains(val.unicodeScalars.first!)
0
Lumialxk 15 nov. 2017 à 09:23

Dépend du type d ' espace que vous recherchez. Pour les espaces "normaux" (0x20), votre code devrait fonctionner. Mais il ne sera pas évalué à true pour les espaces "spéciaux".

Étant donné la chaîne suivante, qui contient différents types d'espaces,

let myString = "This\u{0020}text contains normal spaces\u{00a0}and\u{00a0}non-breaking\u{00a0}ones"

La comparaison avec " " aboutira à la recherche de 4 occurrences

let result1 = myString.enumerated().filter { $0.element == " " }

print(result1)
/* 
   [(offset: 4, element: " "), 
    (offset: 9, element: " "), 
    (offset: 18, element: " "), 
    (offset: 25, element: " ")] 
*/

Mais vous pouvez également utiliser le CharacterSet d'espaces. Attention : ceci sera également évalué à vrai pour les autres types d'espaces (comme les sauts de ligne, les tabulations).

let result2 = myString.unicodeScalars.enumerated().filter { 
                  CharacterSet.whitespaces.contains($0.element) 
              }

print(result2)
/*
    [(offset: 4, element: " "), 
     (offset: 9, element: " "), 
     (offset: 18, element: " "), 
     (offset: 25, element: " "), 
     (offset: 32, element: "\u{00A0}"), 
     (offset: 36, element: "\u{00A0}"), 
     (offset: 49, element: "\u{00A0}")]
*/
1
fguchelaar 15 nov. 2017 à 09:42

Moyen le plus simple

var str : String = textField.stringValue
for i in 0...str.count-1{
    var spaceChr : Character = str.removeFirst() //init
    if spaceChr == " " { //doit}
}
0
Giacomo Sighinolfi 15 nov. 2017 à 09:46

Dans Swift, vous pouvez itérer directement sur une chaîne

   let phrase = "Hello, This is Test String."
        for chr in phrase {
            if chr == " " {
                print("White space")
            }
        }
1
Jack 15 nov. 2017 à 09:45
47303480