Partage
  • Partager sur Facebook
  • Partager sur Twitter

Swift 4 : detecter un mot dans une chaine

Sujet résolu
    2 février 2019 à 10:00:31

    Bonjour a tous,

    j'aimerai savoir comment faire pour trouver si une chaine de chactere strA se trouve dans une chaine de character strB

    Pour ce faire, j'utilise actuellement le code suivant:

    if strB.contains(strA) {
    
    }

    Ca fonctionne bien si je souhaite trouver par exemple "pro" dans la phrase : "Bonjour, y a t il un professionnels ici?"

    Le soucis c'est que je souhaite que le match soit egal donc "pro" est different de "professionnels"

     J'ai donc modifie mon script pour transformer strB en tableau de String. Puis je parcourre mon tableau en comparant les chaines de caractere une par une.

    Ca fonctionne correctement.

    for str in strA.components(separatedBy: " ") {
        if strB.contains(str) {
           
        }
    }

    Mon soucis c'est que strA peut contenir une phrase (et non un seul mot). Par exemple "un pro"

    Et la je ne sais pas comment faire...
    J'imagine que c'est a coup de regex mais je suis vraiment nouveau en swift (j'ai commence avant hier) et j'avoue etre un peu bloquer.

    Pouvez vous m'aider ?

    merci

    -
    Edité par Scion 2 février 2019 à 10:02:55

    • Partager sur Facebook
    • Partager sur Twitter
      2 février 2019 à 15:40:51

      Salut,

      Effectivement c'est plus simple de s'en sortir avec une regex. Avec deux recherches Google :

      • "regex matching word"
      • "swift regex"

      On prend les réponses du premier lien de chaque réponse, on les assemble, et ça donne :

      let testString = "Je suis un professionnel vraiment très pro. Jamais vous n'avez rencontré on pro comme moi"
      let range = NSRange(location: 0, length: testString.count)
      let stringToFound = "un pro"
      let regex = try! NSRegularExpression(pattern: "\\b\(stringToFound)\\b")
              
      if regex.firstMatch(in: testString, options: [], range: range) != nil {
           print("Found match") // En remplaçant "on pro" par "un pro" ça passe par là
      } else {
            print("no match") // J'ai fait une faute exprès dans le testString, donc on rentre là dedans.
      }
      

      -
      Edité par Geda 2 février 2019 à 15:41:41

      • Partager sur Facebook
      • Partager sur Twitter
        3 février 2019 à 0:50:30

        @Geda

        merci ca fonctionne impecable.

        Pour la recherche, comme je viens de commencer le language je ne sais encore comment bien chercher et comment trouver les bonnes infos (je trouve plein de chose qui ne fonctionne pas ou qu'a moitie en contenant des erreurs du a des changements de version).

        Je pense qu'il me faut un peu de temps pour me familiariser avec le language... desole :(

        En tout cas, un gros merci pour ton aide

        • Partager sur Facebook
        • Partager sur Twitter
          3 février 2019 à 9:58:20

          Les intitulés des recherches Google c’était pas pour dire « t’as pas cherché tu m’emmerdes ». Je ne voulais pas être méprisant. (En vrai j’aime bien quand il y a des questions sur iOS, c’est plutôt rare). C’était justement pour montrer comment décomposer le problème pour faire une recherche qui donne des résultats.

          Sur les réponses qui sont écrites dans des versions antérieures de Swift c’est pas si compliqué de les traduire. Souvent le compilateur aide, il suffit de cliquer sur la pastille rouge. Sinon, tu peux retaper le truc à la main, l’autocompletion fera le reste. En général c’est des trucs comme changeStringTo(string: String) qui deviennent changeString(to string: String)

          -
          Edité par Geda 3 février 2019 à 10:00:08

          • Partager sur Facebook
          • Partager sur Twitter
            3 février 2019 à 10:51:13

            Oui ce genre d'erreur j'arrive a les resoudre. Ce sont plutot les erreurs qui te disent que le type est mauvais alors que dans sur le forums (ou la personne a poser la question), on a une reponse qui a une pastille "valide" mais qui genere des erreurs chez moi.
            • Partager sur Facebook
            • Partager sur Twitter

            Swift 4 : detecter un mot dans une chaine

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown