Conversion String en Long en Kotlin : 5 erreurs fatales et comment les éviter

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment convertir un String en Long en Kotlin sans perdre la tête : analyse des erreurs typiques

\n\n

Tout développeur Kotlin se retrouve un jour ou l'autre confronté à cette tâche : prendre une chaîne saisie par l'utilisateur, reçue d'une API ou lue dans un fichier, et la transformer en un nombre de type Long. Rien de plus simple, non ? Pourtant, c'est là que les débutants (et même les développeurs expérimentés) commettent des erreurs qui provoquent des crashs, des écrans vides et des nuits blanches à débugger.

\n\n

Dans cet article, nous allons décortiquer les cinq erreurs les plus fréquentes lors de la conversion de String en Long en Kotlin. Vous apprendrez non seulement à les corriger, mais aussi à écrire un code qui ne se brisera pas au premier input invalide. C'est parti !

\n\n

Erreur n°1 : Utilisation naïve de toLong() sans gestion d'exceptions

\n\n

La méthode la plus directe consiste à appeler toLong() sur la chaîne. Oui, ça fonctionne, mais uniquement si la chaîne contient un nombre valide. Sinon, bonjour NumberFormatException !

\n\n
val userInput = "123abc"\nval number: Long = userInput.toLong() // Déclenche une NumberFormatException !
\n\n

Pourquoi est-ce problématique ? Une exception à l'exécution est toujours un risque. Si votre application ne la gère pas, l'utilisateur verra un crash.

\n\n

Comment corriger ? Utilisez try-catch ou, mieux encore, l'alternative sécurisée toLongOrNull().

\n\n
val userInput = "123abc"\nval number: Long? = userInput.toLongOrNull() // Retourne null, aucune exception\nprintln(number) // null
\n\n

La méthode toLongOrNull() est votre sauveur. Si la chaîne ne peut pas être convertie, elle retourne simplement null, et vous gérez ce cas sereinement.

\n\n

Erreur n°2 : Ignorer les chaînes null et vides

\n\n

En Kotlin, les types sont explicitement divisés en nullable et non-null. Si vous essayez d'appeler toLong() sur une chaîne qui peut être null, le compilateur vous bloquera. Mais attention : une chaîne vide ("") n'est pas null, et elle provoquera aussi une exception.

\n\n
val nullableString: String? = null\n// nullableString.toLong() // Erreur de compilation : seuls les appels safe (?.) ou non-null asserted (!!.) sont autorisés\n\nval emptyString = ""\nemptyString.toLongOrNull() // null, tout va bien
\n\n

Conseil pratique : Vérifiez toujours si la chaîne est vide ou utilisez toLongOrNull() avec l'opérateur Elvis ?:.

\n\n
fun parseUserAge(input: String?): Long {\n    return input?.toLongOrNull() ?: 0L // Si null ou pas un nombre, retourne 0\n}
\n\n

Cette approche rend le code idiomatique et sûr.

\n\n

Erreur n°3 : Oublier les espaces et les caractères invisibles

\n\n

Les utilisateurs sont imprévisibles. Ils peuvent accidentellement ajouter un espace avant ou après le nombre. Une chaîne provenant d'un fichier peut contenir des caractères de saut de ligne \\n. La méthode toLongOrNull() ne sait pas couper la chaîne : elle s'attend à ce qu'elle ne contienne que des chiffres (et éventuellement un signe moins).

\n\n
val dirtyString = "  42  "\ndirtyString.toLongOrNull() // null, à cause des espaces
\n\n

Solution : Appelez toujours trim() avant la conversion.

\n\n
val cleanString = dirtyString.trim()\nval number: Long? = cleanString.toLongOrNull()\nprintln(number) // 42
\n\n

C'est l'un des moyens les plus simples et les plus efficaces d'éviter les bugs. Retenez cette règle : trim before you convert.

\n\n

Erreur n°4 : Problèmes de localisation et de séparateurs

\n\n

Dans différents pays, les nombres s'écrivent différemment. Aux États-Unis et en Russie, on utilise une virgule (1,234) ou un espace (1 234) pour séparer les milliers, et un point pour les décimales. En Europe, c'est l'inverse : la virgule est le séparateur décimal. Kotlin, par défaut, s'attend à une chaîne « propre

Blogs

Book Recommendations