15
votes

Comment obtenir les n derniers caractères d'une chaîne dans Dart?

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


0 commentaires

4 Réponses :


31
votes
var newString = string.substring(string.length - 5);

0 commentaires

5
votes

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.


0 commentaires

0
votes
var newString = string?.substring((string.length - 5).clamp(0, string.length));

0 commentaires

1
votes

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);
}


0 commentaires