Modèles de chaînes Kotlin

Modèles de chaînes Kotlin

1. Vue d'ensemble

Dans ce didacticiel, nous expliquerons ce que sont les modèlesString de Kotlin et comment les utiliser.

Afin de vous familiariser avec d'autres fonctionnalités et de savoir comment utiliser Kotlin, jetez un œil à l'un de nosKotlin tutorials.

2. Cordes à Kotlin

Comme en Java,Strings dans Kotlin sont immuables. Cela signifie que nous n’avons aucun moyen de modifier unString une fois qu’il a été créé. Cependant, nous pouvons dériver un autreString d'un autre.

Kotlin a enrichi la classe JavaString avec des fonctionnalités supplémentaires.

Par exemple, la méthodepadEnd() nous permet de formater unString, pour que l'expression:

"Hello".padEnd(10, '!')

Ce qui produit une nouvelle chaîne“Hello!!!!!”.

3. Modèles de chaîne

Les modèles de chaîne sont des littérauxString qui contiennent des expressions incorporées.

Par exemple, ce code en Java:

String message = "n = " + n;

En Kotlin, c'est juste:

val message = "n = $n"

Toute expression Kotlin valide peut être utilisée dans un modèleString:

val message = "n + 1 = ${n + 1}"

Unlike Java, many Kotlin’s constructs (but certainly, not all) are expressions.

Par conséquent, un modèleString peut également contenir une logique:

val message = "$n is ${if(n > 0) "positive" else "not positive"}

Notez qu'à l'intérieur des accolades, il y a une expression Kotlin valide. C’est une raison pour laquelle nous n’échappons pas aux guillemets doubles imbriqués.

Les modèlesString sont résolus en évaluant l'expression et en appelant une méthodetoString() sur le résultat de l'évaluation.

Les modèlesString peuvent être imbriqués:

val message = "$n is ${if (n > 0) "positive" else
  if (n < 0) "negative and ${if (n % 2 == 0) "even" else "odd"}" else "zero"}"

L'analyseur de modèle deString commence à le résoudre à partir du modèle le plus imbriqué, l'évalue et appelle une méthodetoString() dessus.

Bien que les modèlesString puissent être imbriqués, il est judicieux de les avoir aussi simples que possible. Ce n’est pas du tout difficile car Kotlin nous fournit de nombreux outils utiles.

Que faire si nous voulons utiliser un signe dollar brut et non dans le cadre d'un modèleString?

Ensuite, nous y échappons en mettant une barre oblique inverse devant celui-ci:

val message = "n = \$n"

Ce qui suit le signe dollar devient unString habituel - il n’est plus évalué et il est interprété tel quel.

4. Cordes brutes

De plus, à Kotlin, nous disposons de chaînes brutes triples citées pouvant contenir des caractères spéciaux sans qu'il soit nécessaire de les échapper.

LeString résultant est contenu entre deux occurrences consécutives sans chevauchement de triples guillemets doubles.

Par exemple, en Java, afin de créer correctement unString contenant un chemin de fichier de style Windows vers une ressource située àC:\Repository ead.me,, nous devons le définir de cette manière:

String path = "C:\\Repository\\read.me"

En Kotlin, nous pouvons utiliser la notation à triple citation pour obtenir le même résultat:

val path = """C:\Repository\read.me"""

Nous pouvons utiliser cette notation pour créer unString: multiligne

val receipt = """Item 1: $1.00
Item 2: $0.50"""

Ce qui crée unString qui s'étend exactement sur deux lignes. Si nous préférons cette indentation:

val receipt = """Item 1: $1.00
                >Item 2: $0.50""".trimMargin(">")

Nous utilisons une méthodetrimMargin() qui élimine les éventuels espaces blancs du début de chaque ligne jusqu'à la première occurrence du préfixe de marge (> dans l'exemple ci-dessus).

Triple-quoted strings don’t support any escape sequences. Cela signifie que si nous écrivions

val receipt = """Item 1: $1.00\nItem 2: $0.50"""

pour obtenir unString, sur deux lignes, nous obtiendrions une seule ligne contenant les caractères au lieu du saut de ligne attendu.

LesStringsà guillemets triples prennent cependant en charge la création de modèles.

Cela signifie que toute séquence commençant par le signe dollar est résolue en une chaîne de la manière décrite dans la section précédente. Nous pouvons utiliser ce fait pour faire fonctionner les caractères d'échappement:

val receipt = """Item 1: $1.00${"\n"}Item 2: $0.50"""

5. Conclusion

Dans cet article, nous avons examiné une fonctionnalité du langage Kotlin qui est absente des modèles Java -String. Nous avons illustré leur utilisation dans le cas desStrings. habituels et multilignes

Vous pouvez trouver tous les extraits de code mentionnés ici dans notre référentielon GitHub.