Scala - Cordes
Ce chapitre vous présente les chaînes Scala. Dans Scala, comme en Java, une chaîne est un objet immuable, c'est-à-dire un objet qui ne peut pas être modifié. D'autre part, les objets qui peuvent être modifiés, comme les tableaux, sont appelés objets mutables. Les chaînes sont des objets très utiles, dans le reste de cette section, nous présentons des méthodes importantes dejava.lang.String classe.
Créer une chaîne
Le code suivant peut être utilisé pour créer une chaîne -
var greeting = "Hello world!";
or
var greeting:String = "Hello world!";
Chaque fois que le compilateur rencontre une chaîne littérale dans le code, il crée un objet String avec sa valeur, dans ce cas, «Hello world!». Le mot-clé String peut également être donné dans une autre déclaration comme indiqué ci-dessus.
Essayez l'exemple de programme suivant.
Exemple
object Demo {
val greeting: String = "Hello, world!"
def main(args: Array[String]) {
println( greeting )
}
}
Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.
Commander
\>scalac Demo.scala
\>scala Demo
Production
Hello, world!
Comme mentionné précédemment, la classe String est immuable. L'objet chaîne une fois créé ne peut pas être modifié. S'il est nécessaire d'apporter beaucoup de modifications aux chaînes de caractères, utilisez la classe String Builder disponible dans Scala !.
Longueur de chaine
Les méthodes utilisées pour obtenir des informations sur un objet sont appelées méthodes d'accès. Une méthode d'accesseur qui peut être utilisée avec des chaînes est la méthode length (), qui renvoie le nombre de caractères contenus dans l'objet chaîne.
Utilisez le segment de code suivant pour trouver la longueur d'une chaîne -
Exemple
object Demo {
def main(args: Array[String]) {
var palindrome = "Dot saw I was Tod";
var len = palindrome.length();
println( "String Length is : " + len );
}
}
Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.
Commander
\>scalac Demo.scala
\>scala Demo
Production
String Length is : 17
Concaténation de chaînes
La classe String comprend une méthode pour concaténer deux chaînes -
string1.concat(string2);
Cela renvoie une nouvelle chaîne qui est string1 avec string2 ajouté à la fin. Vous pouvez également utiliser la méthode concat () avec des chaînes littérales, comme dans -
"My name is ".concat("Zara");
Les chaînes sont plus communément concaténées avec l'opérateur +, comme dans -
"Hello," + " world" + "!"
Ce qui aboutit à -
"Hello, world!"
Les lignes de code suivantes pour trouver la longueur de la chaîne.
Exemple
object Demo {
def main(args: Array[String]) {
var str1 = "Dot saw I was ";
var str2 = "Tod";
println("Dot " + str1 + str2);
}
}
Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.
Commander
\>scalac Demo.scala
\>scala Demo
Production
Dot Dot saw I was Tod
Création de chaînes de format
Vous disposez des méthodes printf () et format () pour imprimer la sortie avec des nombres formatés. La classe String a une méthode de classe équivalente, format (), qui renvoie un objet String plutôt qu'un objet PrintStream.
Essayez l'exemple de programme suivant, qui utilise la méthode printf () -
Exemple
object Demo {
def main(args: Array[String]) {
var floatVar = 12.456
var intVar = 2000
var stringVar = "Hello, Scala!"
var fs = printf("The value of the float variable is " + "%f, while the value of the integer " + "variable is %d, and the string" + "is %s", floatVar, intVar, stringVar);
println(fs)
}
}
Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.
commander
\>scalac Demo.scala
\>scala Demo
Production
The value of the float variable is 12.456000,
while the value of the integer variable is 2000,
and the string is Hello, Scala!()
Interpolation de chaîne
L'interpolation de chaînes est la nouvelle façon de créer des chaînes dans le langage de programmation Scala. Cette fonctionnalité prend en charge les versions de Scala-2.10 et supérieures. Interpolation de chaîne: mécanisme permettant d'incorporer des références de variable directement dans le littéral de chaîne de processus.
Il existe trois types (interpolateurs) d'implémentations dans l'interpolation de chaîne.
L'interpolateur de chaînes 's'
Le littéral «s» permet l'utilisation de la variable directement dans le traitement d'une chaîne, lorsque vous y ajoutez «s». Toute variable String avec une portée qui peut être utilisée avec dans une String. Voici les différentes utilisations de l'interpolateur de chaîne 's'.
L'exemple suivant d'extrait de code pour l'implémentation de l'interpolateur 's' en ajoutant la variable String ($ name) à une chaîne normale (Hello) dans l'instruction println.
val name = “James”
println(s “Hello, $name”) //output: Hello, James
L'interpolateur de chaîne peut également traiter des expressions arbitraires. L'extrait de code suivant pour le traitement d'une chaîne (1 + 1) avec une expression arbitraire ($ {1 + 1}) à l'aide de l'interpolateur de chaîne 's'. Toute expression arbitraire peut être intégrée dans '$ {}'.
println(s “1 + 1 = ${1 + 1}”) //output: 1 + 1 = 2
Essayez l'exemple de programme suivant d'implémentation de l'interpolateur 's'.
Exemple
object Demo {
def main(args: Array[String]) {
val name = "James"
println(s"Hello, $name")
println(s"1 + 1 = ${1 + 1}")
}
}
Enregistrez le programme ci-dessus dans Demo.scala. Les commandes suivantes sont utilisées pour compiler et exécuter ce programme.
Commander
\>scalac Demo.scala
\>scala Demo
Production
Hello, James
1 + 1 = 2
L'interpolateur 'f'
L'interpolateur littéral 'f' permet de créer une chaîne formatée, similaire à printf en langage C. Lors de l'utilisation de l'interpolateur 'f', toutes les références de variable doivent être suivies deprintf spécificateurs de format de style tels que% d,% i,% f, etc.
Prenons un exemple d'ajout d'une valeur à virgule flottante (hauteur = 1,9d) et d'une variable String (nom = «James») avec une chaîne normale. L'extrait de code suivant de l'implémentation d'Interpolator «f». Ici $ name% s pour imprimer (variable chaîne) James et $ height% 2.2f pour imprimer (valeur en virgule flottante) 1,90.
val height = 1.9d
val name = "James"
println(f"$name%s is $height%2.2f meters tall") //James is 1.90 meters tall
Il est de type sécurisé (c'est-à-dire) que la référence de la variable et le spécificateur de format suivant doivent correspondre, sinon il affiche une erreur. L'interpolateur 'f' utilise les utilitaires de format String (spécificateurs de format) disponibles en Java. Par défaut, il n'y a pas de caractère% après la référence de variable. Il supposera que% s (chaîne).
Interpolateur `` brut ''
L'interpolateur «brut» est similaire à l'interpolateur «s», sauf qu'il n'effectue aucun échappement des littéraux dans une chaîne. Les extraits de code suivants dans une table diffèrent de l'utilisation des interpolateurs «s» et «bruts». Dans les sorties des effets de 's' usage '\ n' comme nouvelle ligne et dans la sortie de l'utilisation 'brute', le '\ n' n'aura aucun effet. Il imprimera la chaîne complète avec des lettres d'échappement.
utilisation de l'interpolateur 's' | utilisation de l'interpolateur `` brut '' |
---|---|
Program - |
Program - |
Output - |
Output - |
Méthodes de chaîne
Voici la liste des méthodes définies par java.lang.String classe et peut être utilisé directement dans vos programmes Scala -
Sr. Non | Méthodes avec description |
---|---|
1 | char charAt(int index) Renvoie le caractère à l'index spécifié. |
2 | int compareTo(Object o) Compare cette chaîne à un autre objet. |
3 | int compareTo(String anotherString) Compare deux chaînes lexicographiquement. |
4 | int compareToIgnoreCase(String str) Compare deux chaînes lexicographiquement, en ignorant les différences de casse. |
5 | String concat(String str) Concatène la chaîne spécifiée à la fin de cette chaîne. |
6 | boolean contentEquals(StringBuffer sb) Renvoie true si et seulement si cette chaîne représente la même séquence de caractères que le StringBuffer spécifié. |
sept | static String copyValueOf(char[] data) Renvoie une chaîne qui représente la séquence de caractères dans le tableau spécifié. |
8 | static String copyValueOf(char[] data, int offset, int count) Renvoie une chaîne qui représente la séquence de caractères dans le tableau spécifié. |
9 | boolean endsWith(String suffix) Teste si cette chaîne se termine par le suffixe spécifié. |
dix | boolean equals(Object anObject) Compare cette chaîne à l'objet spécifié. |
11 | boolean equalsIgnoreCase(String anotherString) Compare cette chaîne à une autre chaîne, en ignorant les considérations de casse. |
12 | byte getBytes() Encode cette chaîne en une séquence d'octets à l'aide du jeu de caractères par défaut de la plateforme, en stockant le résultat dans un nouveau tableau d'octets. |
13 | byte[] getBytes(String charsetName) Encode cette chaîne en une séquence d'octets à l'aide du jeu de caractères nommé, en stockant le résultat dans un nouveau tableau d'octets. |
14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) Copie les caractères de cette chaîne dans le tableau de caractères de destination. |
15 | int hashCode() Renvoie un code de hachage pour cette chaîne. |
16 | int indexOf(int ch) Renvoie l'index dans cette chaîne de la première occurrence du caractère spécifié. |
17 | int indexOf(int ch, int fromIndex) Renvoie l'index dans cette chaîne de la première occurrence du caractère spécifié, en commençant la recherche à l'index spécifié. |
18 | int indexOf(String str) Renvoie l'index dans cette chaîne de la première occurrence de la sous-chaîne spécifiée. |
19 | int indexOf(String str, int fromIndex) Renvoie l'index dans cette chaîne de la première occurrence de la sous-chaîne spécifiée, en commençant à l'index spécifié. |
20 | String intern() Renvoie une représentation canonique de l'objet chaîne. |
21 | int lastIndexOf(int ch) Renvoie l'index dans cette chaîne de la dernière occurrence du caractère spécifié. |
22 | int lastIndexOf(int ch, int fromIndex) Renvoie l'index dans cette chaîne de la dernière occurrence du caractère spécifié, en effectuant une recherche en arrière en commençant à l'index spécifié. |
23 | int lastIndexOf(String str) Renvoie l'index dans cette chaîne de l'occurrence la plus à droite de la sous-chaîne spécifiée. |
24 | int lastIndexOf(String str, int fromIndex) Renvoie l'index dans cette chaîne de la dernière occurrence de la sous-chaîne spécifiée, en recherchant en arrière en commençant à l'index spécifié. |
25 | int length() Renvoie la longueur de cette chaîne. |
26 | boolean matches(String regex) Indique si cette chaîne correspond ou non à l'expression régulière donnée. |
27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int offset, int len) Teste si deux régions de chaîne sont égales. |
28 | boolean regionMatches(int toffset, String other, int offset, int len) Teste si deux régions de chaîne sont égales. |
29 | String replace(char oldChar, char newChar) Renvoie une nouvelle chaîne résultant du remplacement de toutes les occurrences de oldChar dans cette chaîne par newChar. |
30 | String replaceAll(String regex, String replacement Remplace chaque sous-chaîne de cette chaîne qui correspond à l'expression régulière donnée par le remplacement donné. |
31 | String replaceFirst(String regex, String replacement) Remplace la première sous-chaîne de cette chaîne qui correspond à l'expression régulière donnée par le remplacement donné. |
32 | String[] split(String regex) Divise cette chaîne autour des correspondances de l'expression régulière donnée. |
33 | String[] split(String regex, int limit) Divise cette chaîne autour des correspondances de l'expression régulière donnée. |
34 | boolean startsWith(String prefix) Teste si cette chaîne commence par le préfixe spécifié. |
35 | boolean startsWith(String prefix, int toffset) Teste si cette chaîne commence par le préfixe spécifié commençant un index spécifié. |
36 | CharSequence subSequence(int beginIndex, int endIndex) Renvoie une nouvelle séquence de caractères qui est une sous-séquence de cette séquence. |
37 | String substring(int beginIndex) Renvoie une nouvelle chaîne qui est une sous-chaîne de cette chaîne. |
38 | String substring(int beginIndex, int endIndex) Renvoie une nouvelle chaîne qui est une sous-chaîne de cette chaîne. |
39 | char[] toCharArray() Convertit cette chaîne en un nouveau tableau de caractères. |
40 | String toLowerCase() Convertit tous les caractères de cette chaîne en minuscules en utilisant les règles des paramètres régionaux par défaut. |
41 | String toLowerCase(Locale locale) Convertit tous les caractères de cette chaîne en minuscules en utilisant les règles du paramètre régional donné. |
42 | String toString() Cet objet (qui est déjà une chaîne!) Est lui-même retourné. |
43 | String toUpperCase() Convertit tous les caractères de cette chaîne en majuscules en utilisant les règles des paramètres régionaux par défaut. |
44 | String toUpperCase(Locale locale) Convertit tous les caractères de cette chaîne en majuscules en utilisant les règles du paramètre régional donné. |
45 | String trim() Renvoie une copie de la chaîne, en omettant les espaces de début et de fin. |
46 | static String valueOf(primitive data type x) Renvoie la représentation sous forme de chaîne de l'argument de type de données transmis. |