puts tableau_hash.sort { | a,b | b[1]<=>a[1] }
mon_block { puts "enterieur du block" }
def deux_fois puts "Début" yield yield puts "Fin" end deux_fois { puts "Hello" }
Nous obtenons :
Début Hello Hello Fin
def deux_fois puts 'debut' yield("appel",1) yield("maison",2) puts 'fin' end deux_fois { |a,b| puts "ello #{a} puis #{b}" }
Nous obtenons :
debut ello appel puis 1 ello maison puis 2 fin
p = Proc.new{ |x , y| x + y } p.call(12 , 4)
# Lors d'un nouveau fichier #File.new('test.txt', 'r') do |ligne| # Lorsqu'il est déjà existant File.open('test.txt', 'r') do |ligne| puts ligne end
# Lors d'un nouveau fichier #File.new('test.txt', 'w') do |ligne| # Lorsqu'il est déjà existant File.open('test.txt', 'w') do |ligne| ligne << "une ligne" end
IO.readlines('test.txt').each do |ligne| puts ligne end
# De type chaine contenu = IO.read('fichier.txt') # De type tableau contenu = IO.readlines('fichier.txt')
puts File.zero?("fichier.txt")
puts File.mtime(fichier) < Time.mktime (annee,mois,jours)
t = Time.mktime(annee,mois,jour,heure,minutes,secondes,microsecondes) # Convertir la date dans un autre format : t.strftime('%H:%M:%S,%L')
Documentation sur la classe Time
class Livre # Constructeur d'une classe : def initialize ( titre , auteur , nbpages ) @titre = titre @auteur = auteur @nbpages = nbpages end # Accessibilité des membres : def fonc1 ... end def fonc2 ... end def fonc3 ... end # par défaut les méthodes sont publiques : public :fonc1, :fonc2 # Les méthodes peuvent être utilisé que par la classe elle-même et celles dérivées protected :fonc3 end
On peut s'aider du site Regex101 pour créer les patterns.
Vérifions qu'il y a bien un prénom dans la phrase ci-dessous.
phrase = "je m'appel Bruno et j'ai 22 ans." if phrasee =~ /[A-Z][a-z]+/ then puts "vraie" end
vraie
phrase = "je m'appel Bruno et j'ai 22 ans." if phrase =~ /([A-Z][a-z]+).* ([0-9]+)/ then prenom = $1 age = $2 end
# Récupérer des valeurs dans une chaîne : filtre = ligne.sub(/^([^ ]+) [^"]+"[^ ]+ ([^ ]+)/, "\\1,\\2,\\3") filtre = filtre.split(',') # Remplacer des caractères dans une chaîne : s = 'Bonjour' s1 = s.sub(/[aeiouy]/ , '*') #> 'B*njour' s2 = s.gsub(/[aeiouy]/ , '*') #> 'B*nj**r'
On notera qu'il existe des méta-caractères qui devront être précedé d'un “\” pour être lu :
. | ( ) [ ] { } \ ˆ $ * + /
Séquence | Utilité |
---|---|
\d | Numériques |
\D | Non numériques |
\w | Tous les caractères |
\W | Aucun caractères |
\s | Caractères séparateur |
\S | Sans caractères séparateur |
[:alnum:] | Caractères alphanumériques |
[:alpha:] | Lettres minuscules et majuscules |
[:blank:] | Espace et tabulation |
[:lower:] | Minuscules |
[:upper:] | Majuscules |
[:punct:] | sauf espace et alphanumériques |
[:space:] | Espaces |
[:xdigit:] | Caractères des nombres hexadécimaux |
Pour personnaliser d'avantages son code, il faut parfois faire appel à des modules externe à ruby. Ce site permettra sans doute de répondre au bonheur de chacun.
Voici comment les importer :
gem install <module>
require "open-uri" open("http://bruno-tatu.com") do |i| puts i.read.scan(/<img .* src=\"(.*)\"/) end