Следующая программа в интерактивном режиме, отзовется ваш вклад, но выгоды каждого символа.
Вы также можете отправить файл к нему.
dart upper_cat.dart < file.txt
Это выводит файл с каждым символом, заглавным.
import 'dart:convert';
import 'dart:io';
main() {
// Stop your keystrokes being printed automatically.
stdin.echoMode = false;
// This will cause the stdin stream to provide the input as soon as it
// arrives, so in interactive mode this will be one key press at a time.
stdin.lineMode = false;
var subscription;
subscription = stdin.listen((List<int> data) {
// Ctrl-D in the terminal sends an ascii end of transmission character.
// http://www.asciitable.com/
if (data.contains(4)) {
// On my computer (linux) if you don't switch this back on the console
// will do wierd things.
stdin.echoMode = true;
// Stop listening.
subscription.cancel();
} else {
// Translate character codes into a string.
var s = LATIN1.decode(data);
// Capitalise the input and write it back to the screen.
stdout.write(s.toUpperCase());
}
});
}
Существует также console библиотеки, чтобы помочь с такого рода вещи. Я не пробовал, но дайте ему снимок и отчитайтесь;)
В следующем примере обрабатывается вход UTF8 - в приведенном выше примере для ввода требуется 1 байтовый символ.
import 'dart:convert';
import 'dart:io';
main() {
stdin.echoMode = false;
stdin.lineMode = false;
var subscription;
subscription = stdin
.map((List<int> data) {
if (data.contains(4)) {
stdin.echoMode = true;
subscription.cancel();
}
return data;
})
.transform(UTF8.decoder)
.map((String s) => s.toUpperCase())
.listen(stdout.write);
}
Спасибо, Гюнтер. Я попробовал ваше предложение, но я все еще не уверен, как это может захватить stdin в String в Dart. Можете ли вы расширить свой ответ немного больше? Еще раз спасибо! –
Я обновил свой ответ. Если вы хотите получить более конкретный ответ, предоставьте дополнительную информацию о том, что вы пытаетесь выполнить, и что именно вас беспокоит. –
Эй, Гюнтер. Извините, я опоздал с тобой вернуться к тебе. Ваше предложение работает, но я не смог его изменить, чтобы удовлетворить мои потребности. В основном, я пытаюсь сделать что-то вроде 'String input = stdin.readLineSync()', но уметь сохранять несколько строк вместо одного. Для фона я работаю над предварительным процессором CSS. Поэтому мне нужно сохранить stdin в строку, а затем обработать строку. –