web-dev-qa-db-fra.com

Comment formater une chaîne interpolée

J'ai besoin d'une chaîne de format comme "Send %d seconds ago", "Harry like %s", "I think %1$s like %2$s". Ceux-ci peuvent être implémentés dans Android, mais je ne sais pas comment les implémenter dans Dart of Flutter.

3
H3c

Dart supporte l'interpolation de chaîne

var seconds = 5;
print("Send $seconds seconds ago");

var harryLikes = 'Silvia';
var otherName = 'Erik';
var otherLikes = 'Chess';
print("Harry like $harryLikes", "I think $otherName like $otherLikes");

De plus, des expressions plus complexes peuvent être incorporées avec ${...}

print('Calc 3 + 5 = ${3 + 5}');

Les types de nombre et le package intl fournissent davantage de méthodes pour formater les nombres et les dates.

Voir par exemple:

4
Günter Zöchbauer

Ajoutez ce qui suit à votre pubspec.yaml

dependencies:
  sprintf: "^4.0.0"

puis lancez pub install.

Ensuite, importez Dart-sprintf:

import 'package:sprintf/sprintf.Dart';

Exemple #

import 'package:sprintf/sprintf.Dart';

void main() {
     double seconds = 5.0;
       String name = 'Dilki';
       List<String> pets = ['Cats', 'Dogs'];

       String sentence1 = sprintf('Sends %2.2f seconds ago.', [seconds]);
       String sentence2 = sprintf('Harry likes %s, I think %s likes %s.', [pets[0], name, pets[1]]);

       print(sentence1);
       print(sentence2);
}

Sortie

Sends 5.00 seconds ago. Harry likes Cats, I think Dilki likes Dogs.

Source: https://pub.dartlang.org/packages/sprintf

0
enadun