I would like to "beautify" the output of one of my Dart scripts, like so:
-----------------------------------------
OpenPGP signing notes from key `CD42FF00`
-----------------------------------------
<Paragraph>
And I wonder if there is a particularly simple and/or optimized way of printing the same character x
times in Dart. In Python, print "-" * x
would print the "-"
character x
times.
Learning from this answer, for the purpose of this question, I wrote the following minimal code, which makes use of the core Iterable
class:
main() {
// Obtained with '-'.codeUnitAt(0)
const int FILLER_CHAR = 45;
String headerTxt;
Iterable headerBox;
headerTxt = 'OpenPGP signing notes from key `CD42FF00`';
headerBox = new Iterable.generate(headerTxt.length, (e) => FILLER_CHAR);
print(new String.fromCharCodes(headerBox));
print(headerTxt);
print(new String.fromCharCodes(headerBox));
// ...
}
This gives the expected output, but is there a better way in Dart to print a character (or string) x
times? In my example, I want to print the "-"
character headerTxt.length
times.
On the Standard toolbar, double-click the Format Painter button. Then, click to select each item, or region select the items to which you want to apply the formatting. NOTE: Click the Format Painter button again when you are finished, or press ESC to turn off the Format Painter.
printf("%d\n", x); x++;
The original answer is from 2014, so there must have been some updates to the Dart language: a simple string multiplied by an int
works.
main() {
String title = 'Dart: Strings can be "multiplied"';
String line = '-' * title.length
print(line);
print(title);
print(line);
}
And this will be printed as:
---------------------------------
Dart: Strings can be "multiplied"
---------------------------------
See Dart String
's multiply *
operator docs:
Creates a new string by concatenating this string with itself a number of times.
The result of
str * n
is equivalent tostr + str + ...(n times)... + str
.Returns an empty string if
times
is zero or negative.
I use this way.
void main() {
print(new List.filled(40, "-").join());
}
So, your case.
main() {
const String FILLER = "-";
String headerTxt;
String headerBox;
headerTxt = 'OpenPGP signing notes from key `CD42FF00`';
headerBox = new List.filled(headerTxt.length, FILLER).join();
print(headerBox);
print(headerTxt);
print(headerBox);
// ...
}
Output:
-----------------------------------------
OpenPGP signing notes from key `CD42FF00`
-----------------------------------------
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With