Вопрос не определен. Реверсирование произвольных строк не имеет смысла и приведет к нарушению вывода. Первым (преодолимым) препятствием является Утф-16. Дарт строка кодируется как UTF-16 и задний ход только на кодовые блоках приводит к недействительным строкам:
var input = "Music \u{1d11e} for the win"; // Music for the win
print(input.split('').reversed.join()); // niw eht rof
split
функция явно предостерегает от этой проблемы (с примером):
Расщепления с пустая строка ('') разбивается на границы кодового блока UTF-16, а не на границах рун [.]
Существует простой исправить это: вместо того, чтобы обратить вспять отдельные кодовые блоки можно поменять местами руны:
var input = "Music \u{1d11e} for the win"; // Music for the win
print(new String.fromCharCodes(input.runes.toList().reversed)); // niw eht rof cisuM
Но это еще не все. Руны тоже могут иметь определенный порядок. Это второе препятствие много сложнее решить. Простой пример:
var input = 'Ame\u{301}lie'; // Amélie
print(new String.fromCharCodes(input.runes.toList().reversed)); // eiĺemA
Обратите внимание, что акцент на неправильном знаке.
Возможно, существуют другие языки, которые еще более чувствительны к порядку отдельных рун.
Если ввод имеет серьезные ограничения (например, Ascii, или Iso Latin 1), то технически возможны обратные строки. Тем не менее, я еще не видел ни одного случая использования, когда эта операция имела смысл.
Использование этого вопроса в качестве примера для отображения того, что строки имеют операции типа «Список», также не является хорошей идеей. За исключением нескольких случаев использования, строки должны обрабатываться в отношении конкретного языка и с очень сложными методами, которые имеют знание по языку.
В частности, говорящие на родном английском языке должны обратить внимание: строки редко можно обрабатывать, как если бы они были списками отдельных символов. Практически на любом другом языке это приведет к ошибкам программ. (И не заводи меня на toLowerCase
и toUpperCase
...).
Можете привести пример, где это было бы полезно. В настоящее время существует множество ответов, которые не подходят для многих материалов, потому что вы не указали прецедент со строгими ограничениями, чтобы сработала обратная строка. Ни один из ответов пока не работает с простыми вводами, такими как 'Ame \ u {301} lie''. –
@FlorianLoitsch Я писал как угловой фильтр в качестве демонстрации. Было просто создать фильтр, который изменил бы строку. Я уточню в вопросе, что такое мой вариант использования. –