[Tutorial] Patterns - Classes, Caracteres, Capturas e Cadeias |
Reppam « Censeur » 1487529060000
| 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Padrões ㅤPadrões são usados por algumas funções Lua, como string.find, string.gmatch e string.match.ㅤVeja um exemplo: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 pattern = "Este é um texto feio" Match simples ㅤToda string é, de um jeito ou de outro, uma cadeia de patterns (padrões). Code Lua 1 2 3 pattern = "Atelier801" Classe de caracteres ㅤUma classe de caracteres é uma cadeia composta por combinações generalizadas de caracteres. A pattern em maiúscula exerce o efeito contrário, ou seja, %L = %u e %U = %l.
Caracteres mágicos ㅤCaracteres mágicos são usados para adicionar algum efeito nas classes de caracteres. Estes podem deixar de ser mágicos ao utilizar %caractere. Por exemplo: %% = %, %* = *
ㅤVeja um exemplo com os quantificadores ?, +, - e *: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 pattern = "%d?%u" Âncoras ㅤÂncoras indicam uma pattern que certifica o começo e o fim de uma string. ㅤVeja um exemplo: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 numeros = "10, 20,30, 40, 50" ㅤUma âncora no início ( ^ ): Code Lua 1 2 3 4 5 6 7 8 numeros = "123,456,789" Code Lua 1 2 3 4 5 6 7 8 numeros = "teste,123,456,789" ㅤUma âncora no fim ( $ ): Code Lua 1 2 3 4 5 6 7 8 numeros = "123,456,789" Code Lua 1 2 3 4 5 6 7 8 numeros = "123,456,789, teste" Cadeias ㅤSão usados quando uma única classe de caracteres não pode realizar todo o trabalho. Usa-se [ ] ㅤVeja um exemplo: Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 pattern = "[ohle%d]+" -- "e", "l", "h", "o", "%d" Raios ㅤVocê pode usar um raio de caracteres, onde x-y, x é o início e y o final. Como 0-9 = 0,1,2,3,5,6,7,8,9 ㅤVeja um exemplo: Code Lua 1 2 3 4 5 6 7 8 9 10 pattern = "[e-o6-9]+" Complementos ㅤComplementos indicados por ^ significam que a cadeira capturada não deve ter tais caracteres ㅤVeja um exemplo: Code Lua 1 2 3 4 5 6 7 8 9 10 11 pattern = "[^%s%d]+" Capturas ㅤCapturas retornam o padrão desejado de uma string. Usa-se ( ) ㅤVeja um exemplo: Code Lua 1 2 3 4 5 6 7 8 9 pattern = "(%w+) ?= ?([\"'])(.*)%2" -- O "%2" atribui o valor identificado em ([\"']), ou seja, não poderá ser \" e ', apenas \" e \" ou ' e ' Exercícios 1. Senha ㅤCrie uma função que valide uma senha. Esta deve conter ao menos: ㅤㅤ• 2 números; ㅤㅤ• 5 letras maiúsculas ou minúsculas; ㅤㅤ• A palavra lua; ㅤㅤ• Um ponto de interrogação Resposta Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 verificarSenha = function(senha) 2. XML ㅤCrie uma função que capture todos os atributos de cada piso do mapa quando um mapa novo iniciar. Resposta Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 14 pisos = {} Dernière modification le 1492021260000 |
Konynno « Consul » 1487529300000
| 0 | ||
Interessante. Vou praticar. Amei a ideia de exercícios |
Brenower « Censeur » 1487530080000
| 0 | ||
ótimo tutorial <3 |
Hydroper « Citoyen » 1487535300000
| 0 | ||
É também uma péssima ideia validar/interpretar uma string sem processar uma codificação específica de caracteres. As mensagens do chat no TFM usam UTF-8 pelo jeito (basta verificar que o caractere 'ã' é codificado com 2 bytes, que são: 0xC3 e 0xA3). |
Mescouleur « Citoyen » 1487556120000
| 0 | ||
Ebaaa! Ficou muito legal! |
0 | ||
Parabéns! Tá muito bem explicado. |
Mescouleur « Citoyen » 1487624520000
| 0 | ||
Amei tanto que vou até comentar de novo Ficou muito bom cara |
Bortverde « Consul » 1487709480000
| 0 | ||
Uau Quem diria que o TFM teria uma programação tão complexa com o Lua Desde coisas simples até isso |
Thanos « Citoyen » 1487720880000
| 0 | ||
Essas coisas em português soam tão bizarras. Mas mto bom, parabéns. |
Jellymichey « Censeur » 1492014420000
| 0 | ||
Lynezx a dit : não se preocupe que vice-versa é igual ;) como é possível encontrar os pisos se não existe a key xmlMapInfo na tabela room? Dernière modification le 1492014600000 |
Reppam « Censeur » 1492112280000
| 0 | ||
Jellymichey a dit : Tem sim, tfm.get.room.xmlMapInfo.xml:match("<S>(.-)</S>") |
Jellymichey « Censeur » 1492178820000
| 0 | ||
Reppam a dit : em foreach não aparece |
Brenower « Censeur » 1492179360000
| 0 | ||
Jellymichey a dit : Foreach é obsoleto, não deve ser usado |
Jellymichey « Censeur » 1492179540000
| 0 | ||
Brenower a dit : e quando eu mandei printar isso deu expected .-. |
Laagaadoo « Citoyen » 1492186740000
| 0 | ||
Jellymichey a dit : A tabela xmlMapInfo só existe quando vc roda um mapa novo com tfm.exec.newGame |
Jellymichey « Censeur » 1492453260000
| 0 | ||
Laagaadoo a dit : mesmo assim não consigo dar print ao xmlMapInfo .-. |
Laagaadoo « Citoyen » 1492454220000
| 0 | ||
Jellymichey a dit : Code Lua 1 2 3 4 5 tfm.exec.newGame('@315801') |