Comment obtenir les n derniers caractères d'une chaîne?
J'ai essayé d'utiliser:
var string = 'Dart is fun'; var newString = string.substring(-5);
Mais cela ne semble pas correct
4 Réponses :
var newString = string.substring(string.length - 5);
Bien que @Alexandre Ardhuin soit correct, il est important de noter que si la chaîne comporte moins de n
caractères, une exception sera levée:
String newString = oldString.padLeft(n).substring(max(oldString.length - n, 0)).trim()
Il vous incomberait de vérifier la longueur avant de l'exécuter de cette façon
oldString ??= '';
Pendant que vous y êtes, vous pouvez également envisager de vous assurer que la chaîne donnée n'est pas nulle.
String newString(String oldString, int n) { if (oldString.length >= n) { return oldString.substring(oldString.length - n) } else { // return whatever you want } }
Si vous aimez les one-liners, une autre option serait:
Uncaught Error: RangeError: Value not in range: -5
Si vous vous attendez à ce qu'il retourne toujours une chaîne de longueur n
, vous pouvez la .padLeft(n, '0')
avec la valeur par défaut de votre .padLeft(n, '0')
), ou simplement laisser le trim()
.
Au moins, à partir de Dart SDK 2.8.1
, c'est le cas. Je sais qu'ils travaillent à améliorer la sécurité nulle et cela pourrait changer à l'avenir.
var newString = string?.substring((string.length - 5).clamp(0, string.length));
Créez une extension:
var source = 'Hello World'; var output = source.lastChars(5); // 'World'
Usage:
extension E on String { String lastChars(int n) => substring(length - n); }