« Programmation Ruby/Types standards » : différence entre les versions

Contenu supprimé Contenu ajouté
+ correction orthographe/grammaire
Ligne 7 :
== Chaîne de caractères ==
 
En ruby les chaineschaînes de caractères sont représentées par l'objet "''String''". En réalité cet objet contient et permet la manipulation d'un nombre indéfini d'octets, typiquement des caractères, nous pourrons néanmoins y stocker tout type de données binaires ou non.
 
=== Créer une chainechaîne de caractères ===
 
En ruby il existe une multitude de manière de créer une chainechaîne de caractères, par exemple en créant une instance de l'objet ''String'' :
 
maChaine = String.new("Une chainechaîne de caractères")
 
Mais le moyen le plus courant de créer une chainechaîne est de la placer entre simple quote (') ou entre double quote ("). Néanmoins ces deux moyens ne sont pas équivalents : en utilisant les doubles quotes ruby évaluera les expressions contenues entre ''#{'' et ''}'', ainsi que les [[Programmation Ruby/Caractères d'échapementséchappements|caractères d'échapementséchappements]].
 
i = 100
Ligne 26 :
=> la valeur de i est \n #{i}
 
Dans une chainechaîne de caractère ''\'' à une valeur particulière, elle permet de placer un [[Programmation Ruby/Caractères d'échapementséchappements|caractères d'échapementséchappements]]. Le caractère ''\'' indique à ruby que le caractère suivant possède une valeur particulière : ainsi "''\n''" représente une nouvelle ligne. Les [[Programmation Ruby/Caractères d'échapementséchappements|caractères d'échapementséchappements]] ne sont pas pris en compte avec une chainechaîne de caractères débutant par un simple quote, néanmoins nous pouvons l'utiliser pour indiquer à Ruby de considérer le simple quote ou le backslash suivant comme faisant parti de la chainechaîne :
 
puts 'un simple quote : \' qui ne ferme pas la chainechaîne, et ici un backslash : \\'
=> un simple quote : ' qui ne ferme pas la chainechaîne, et ici un backslash : \
 
Un autre moyen de créer une chainechaîne est d'utiliser ''%q'' ou ''%Q'', qui équivalent respectivement au simple et au double quote. NeanmoinsNéanmoins l'utilisation de ''%q'' ou ''%Q'' permet de définir le caractère d'ouverture et de fermeture de la chainechaîne :
 
%q!j'utilise le caractère \! pour ouvrir ou fermer la chainechaîne, ' et " peuvent ainsi être utilisés sans \ !
%q*je peux utiliser n'importe quel caractère non alpha-numérique qui n'est pas dans la chainechaîne elle même*
 
Si nous avons plusieurs lignes de texte à écrire nous pouvons utiliser les caractères ''<<'' suivit d'un identifiant pour créer une chainechaîne ayant les mêmes propriétés qu'une chainechaîne entre double quote, ou les caractères ''<<-'' suivis d'un identifiant entre simple quote pour créer un chainechaîne de caractères ayant les mêmes propriétés qu'une chainechaîne entre simple quote :
 
i = 100
maChaine <<DEBUT
une chainechaîne de caractères
i vaut #{i}
DEBUT
=> une chainechaîne de caractères
i vaut 100
i = 100
maChaine <<-'DEBUT'
une chainechaîne de caractères
i vaut #{i}
DEBUT
=> une chainechaîne de caractères
i vaut #{i}
 
Ligne 60 :
=== Comparaisons de chaînes ===
 
Les chaînes de caractères peuvent être comparées entre elles comme indiqués dans le chapitre [[Programmation Ruby/Controle#Expressions booléennes|Expressions booléennes]] gracegrâce aux méthodes ''<, <=, ==, >=, >''
 
"abcdef" <=> "abcde" => 1
Ligne 87 :
"abcdef".casecmp("ABCDEF") => 0
 
=== Manipulation de chaineschaînes ===
 
==== Taille d'une chainechaîne et index des caractères ====
 
===== length =====
 
''length'' permet de connaitreconnaître la taille d'une chaîne de caractères :
 
"Bonjour le monde".length => 16
Ligne 119 :
"Bonjour le monde".rindex('o',9) => 4
 
AÀ noténoter que si le second paramètre est négatif, alors l'index est compté à partir de la fin de la chaîne :
 
"Bonjour le monde".rindex('o',-9) => 4
Ligne 127 :
 
===== * =====
L'opérateur de multiplication renvoie une chainechaîne de caractères contenant ''n'' fois la chaîne représentée par l'objet :
 
"Ho! " * 3 => Ho! Ho! Ho!
Ligne 142 :
 
L'opérateur ''[]'' permet de récupérer un ou plusieurs caractères faisant parti d'une chaîne.
Si un entier est passé en paramètre, l'opérateur renverra le code asciiASCII du caractère correspondant (le premier caractère est indexé par la valeur 0) :
 
maChaine = "Bonjour le monde"
maChaine[3] => 106 # Correspond au code asciiASCII du 4ème caractère (j)
 
Si deux entiers sont passés en paramètres, l'opérateur renverra une sous-chaîne commençant à l'index passé en premier paramètre et de longueur indiquée par le second élément :
Ligne 162 :
On peut également utiliser une [[Programmation Ruby/Types standards#Expression rationnelle|expression rationnelle]], nous verrons cela plus en détail dans le chapitre correspondant.
 
L'opérateur ''[]='' permet de changer le contenu d'une chainechaîne de caractères. L'utilisation est semblable à celle de ''[]'', à la différence que plutôt que de renvoyer un ensemble de caractères, l'opérateur modifiera la chaîne :
 
maChaine[3] = "V"
Ligne 170 :
puts maChaine => Bonjour tout le monde
 
Si deux entiers sont passés en paramètres, ruby remplacera la chainechaîne commençant à l'index passé en première paramètre et d'une longueur passée en second paramètre :
 
maChaine[8,8] = "Roger"
Ligne 201 :
===== chomp, chomp!, chop et chop! =====
 
''chop'' et ''chop!'' permettent de supprimer le dernier caractère d'une chaîne, néanmoisnéanmoins si les deux dernier caractères sont "''\r\n''", les deux caractères sont supprimés :
 
"Bonjour\r\n".chop => "Bonjour"
Ligne 265 :
| p || symbole
|-
| s || chainechaîne de caractères, si une précision est donnée, alors elle indique le nombre de caractères
|-
| u || nombre entier non signé (pas de signe)
Ligne 374 :
|}
 
La chaîne de format se compose d'un nombre de directives à piocher dans le tableau précédent, optionnellementfacultativement suivi d'un nombre indiquant le nombre de fois qu'il faut répéter cette directive, un astérisque (''*'') correspondant a tous les éléments restant. Les directives ''s'',''S'',''i'',''I'',''l'' et ''L'' peuvent être suivis d'un underscore (''_'') indiquant de choisir le format natif du système.
 
Exemples :
Ligne 399 :
"1999zzz".succ => "2000aaa"
 
''upto'' itère à travers les valeurs successives d'une chaîne, jusqu'à arriver à la chaîne passée en paramètre. La méhodeméthode incrémente à partir de la dernière valeur alphanumérique de la chaîne :
 
"<<aa>>".upto("<<bb>>") do
Ligne 435 :
==== each_byte ====
 
''each_byte'' permet d'itérer à travers la chaîne de caractères, octet par octet. La valeur qui sera envoyée au bloc sera le code asciiASCII (donc un entier) du caractère :
 
"bonjour".each_byte {|i| print i.to_s+" "} => 98 111 110 106 111 117 114
Ligne 472 :
=== Syntaxe ===
 
En ruby une valeur numérique peut s'écrire de différente forme, notamentnotamment en fonction de la base utilisée.
 
Classiquement, une valeur numérique peut s'écrire comme une suite de chiffres séparés éventuellement par des caractères de soulignement ( ''_'') qui seront ignorés lors de l'interprétation. Une valeur négative est simplement préfixée par le signe moins (''-'') :
Ligne 480 :
-42 => -42
 
On peut également travailler dans une autre base en préfixant la valeur numérique. Ainsi en préfixant avec ''0'' (zéro) on indique l'utilisation d'un nombre en base octale, 0x pour un nombre en héxadécimalhexadécimal et 0b pour un nombre en binaire :
 
0767 => 503
Ligne 493 :
4.class => Fixnum
 
Certains objets, comme l'objet ''String'', possèdent une méthode ''to_i'' qui renvoie si possible une valeur entière, et ''to_f'' qui renvoi si possible un flotantflottant :
 
" 58_87".to_i => 5887