yoim Posté(e) le 20 février 2019 Signaler Posté(e) le 20 février 2019 Bonjour, Je recupere une string d'une variable globale. Je la recupere comme ca : "aujourd'hui : 11°c - Nuit claire" J'aimerais la formater de facon a me creer 2 strings dans 2 variables Je veux juste recuperer le "11" --> variable temperature et "Nuit claire" --> variable weather Comment faire ? avec gsub je pense, j'ai essayé mais j'ai toujours un truc qui va pas. De plus a la place de l'espace entre nuit et claire, j'aimerais lui rajouter %20 Si un pro Lua pouvait m'aiguiller ... Merci d'avance.
jojo Posté(e) le 20 février 2019 Signaler Posté(e) le 20 février 2019 est-ce que ceci ne pourrait pas t'aider ? 1
Barelle Posté(e) le 20 février 2019 Signaler Posté(e) le 20 février 2019 Avec : local s="aujourd'hui : 11°c - Nuit claire"; -- on extrait les chiffres local temperature = tonumber(string.match(s, "%d+")); -- "- " est considéré comme séparateur, on cherche sa position pos= string.find(s, "- "); -- on extrait la chaîne commençant en pos+2 local weather=string.sub(s, pos+2); print(temperature); print(weather); on obtient : 11 Nuit claire De rien... 2
yoim Posté(e) le 20 février 2019 Auteur Signaler Posté(e) le 20 février 2019 @Barelle Merci beaucoup Mr. C'est clair et ca fonctionne. Encore une chose, je veux mettre à la place de l'espace "%20". local espace=(weather:gsub('% ', '%20')) correct ?
Barelle Posté(e) le 21 février 2019 Signaler Posté(e) le 21 février 2019 Pour remplacer tous les espaces par "%20", il faudrait plutôt faire : weather = string.gsub(weather, "%s", "%%20"); 1
yoim Posté(e) le 21 février 2019 Auteur Signaler Posté(e) le 21 février 2019 Parfait. merci encore. Si je comprends bien "%d+" Il prend le premier bloc qui est un nombre. et "%s" Toute la string s C'est bien ca ?
Barelle Posté(e) le 21 février 2019 Signaler Posté(e) le 21 février 2019 Oui, "%d+" retourne le premier nombre, "%d" retourne le premier chiffre rencontré de la gauche vers la droite, le + indiquant qu'il faut prendre aussi les suivants. Non, "%s" indique toutes les espaces (et oui, féminin en typographie...), ainsi : s=string.gsub("Nuit claire étoilée", "%s", "%%20"); print(s); -- retourne Nuit%20claire%20étoilée Pour ne remplacer que la première espace il eut fallu faire : s=string.gsub("Nuit claire étoilée", "%s", "%%20", 1); print(s); -- retourne Nuit%20claire étoilée -- ou encore : s=string.gsub("Nuit claire étoilée", " ", "%%20", 1); print(s); -- retourne Nuit%20claire étoilée Remarque : le signe "%" a un sens réservé dans les patterns, aussi est-il nécessaire de le doubler dans '%%20". 1 1
yoim Posté(e) le 21 février 2019 Auteur Signaler Posté(e) le 21 février 2019 @Barelle Merci, j'ai enfin compris un petit peu les patterns. Super sympa d'avoir bien detaillé ta solution.
Messages recommandés