Это довольно немного короче, всего 41 символ.
,[[->+>+<<]>-------------[>.<[-]]>[-]<<,]
Он считывает значение в [0]. Он копирует значение чтения в [1] и [2] и вычитает 13 из [1]. Если a [1] отличен от нуля (это означает, что это не CR), он помещает [2] и очищает [1]. Затем он очищает [2] и снова читает [0] и повторяет.
У этого есть дополнительное преимущество: поскольку он оставляет [0] = 0 каждый раз, когда он читает - он должен поддерживать виртуальные машины BF, которые читают EOF как 0 или обрабатывают EOF как «без изменений», оба из которых общие.
Поскольку это не заменяет пары CRLF с LF, а скорее всего ограничивает CR, это не зависит от предположения, что файл заканчивается LF. Мое собственное тестирование с dos2unix (по крайней мере, Cygwin) не указывает, что одиночные CR сохраняются.
+1 от меня для тех, кто сообщений рабочего кода; ^) – Toad
я буду соответствовать его :) –
я принял первый рабочий ответ, но тот, кто сообщений (другая, очевидно) рабочая программа все еще получает upvotes. –