Aller au contenu

aide gsub Lua String


Messages recommandés

Posté(e)

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.

 

Posté(e)

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...  :6:

  • Like 2
Posté(e)

@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 ?

Posté(e)

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 ?

 

Posté(e)

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".

  • Like 1
  • Thanks 1
×
×
  • Créer...