Aller au contenu
yoim

aide gsub Lua String

Recommended Posts

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.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

est-ce que ceci ne pourrait pas t'aider ?

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour remplacer tous les espaces par "%20", il faudrait plutôt faire :

weather = string.gsub(weather, "%s", "%%20");

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

@Barelle

 

Merci, j'ai enfin compris un petit peu les patterns.

 

Super sympa d'avoir bien detaillé ta solution. ;)

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×