Ах, еще одно мое эгоистичное использование этого стека .
Будучи владельцем Chromebook, я частый пользователь Ace IDE, редактора, используемого Cloud9. У него много инструментов для работы с лишним пробелом, но у него, в частности, нет одного: очистка пустых строк.
Ваша миссия сегодня состоит в том, чтобы, учитывая входные данные из места, которое я могу скопировать и вставить в [ ;)
], вывести что-то идентичное, сохранить все пробелы и табуляторы в других пустых строках.
Я приведу несколько примеров, где #
s представляет пробельные символы, которые нужно удалить.
ВХОД 1:
if (this.Color !== 'blue') {
##
this.Color = 'blue';
}
ВЫХОД:
if (this.Color !== 'blue') {
[empty line]
this.Color = 'blue';
}
ВХОД 2:
function outputSomething(times) {
for (var iter = 0; iter < times; iter++) {
console.log('"# # " represents a tabulator');
// This is a comment
# #
}}
ВЫХОД:
function outputSomething(times) {
for (var iter = 0; iter < times; iter++) {
console.log('"# # " represents a tabulator');
// This is a comment
[empty line]
}}
ВХОД 3:
var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
# # ####
console.log(x + ' ' + y);
ВЫХОД:
var x = 'Do you prefer spaces or tabs?';
var y = 'I\'m using both here. Sue me.';
[empty line]
console.log(x + ' ' + y);
Вы можете обработать ввод, как вам нравится. Выводите куда угодно, пока я могу скопировать и вставить из него [ ;)
].
Применяются стандартные лазейки, выигрывает кратчайший ответ в байтах!
источник
[empty line]
, или вообще нет строки?Ответы:
Japt ,
10 8 6 54 байтаПопробуйте онлайн!
объяснение
Так
mx1R
разбивает строку поR
которой , обрезает правую часть каждой строки, используяx1
и снова соединяет строки новой .Сохранено 2 байта благодаря ETHproductions.
источник
®x1}R
.mx1R
чтобы решить всю проблему в 4 байтах ASCII :-) (Этоx1
автоматически интерпретируетсяm
как_x1}
mx1R
это работает, но это круто!Сетчатка , 5 байт
Попробуйте онлайн!
Не столь очевидный подход вознаграждает нас лучшим результатом :)
объяснение
G
указывает на это как этап Grep, сохраняя только те строки, где можно найти соответствие заданному регулярному выражению (\S
соответствует непробельным символам). Если бы не было для начала%
это полностью удалило бы строки вместо того, чтобы просто «опустошить» их.%
Является модификатором , который применяет этап один раз к каждой строке , а затем присоединяется к результатам с новой строкой: в нашем случае это означает , что пустая строка , возвращаемая Grep для пробельных только линий станет пустой строкой в результате.источник
sed , 6 байт
Попробуйте онлайн!
источник
s
ubstitution. Использование простого совпадения иg
умный способ сэкономить пару байтов.sed
что нет\S
или «что-то, что не является пробелом». Или это?/\S/!g
V ,
5, 4 байтаПопробуйте онлайн!
Объяснение:
HexDump:
источник
JavaScript (ES6), 26 байт
Я не понимаю, почему так много голосов!
Попытайся
источник
Python 3 ,
635536 байтВход и выход - это массивы строк. Регистрация на
'\n'
.Для исходной программы, которая содержит строки ввода / вывода:
Попробуйте онлайн!
Сохранено 8 байт благодаря @Rod!
Благодаря @LeakyNun сэкономлено 19 байт!
источник
CJam ,
1816 байтовОбратите внимание, что строка содержит 1 пробел и 1 табуляцию.
Попробуйте онлайн!
объяснение
источник
Сетчатка , 8 байт
Действительно бессмысленный вызов.
m
делает его многострочным (игнорирует перевод строки).\s
соответствует как пробел, так и табуляцияПопробуйте онлайн!
источник
Вим,
2018161310 байтЯ ни в коем случае не эксперт Vim, но на этот вопрос нужен ответ Vim.
:%s/^\s*$<cr>
<cr>
это возврат каретки.Changelog:
:norm
вместо того:normal
(-2 байта)*
вместо+
означает, что мы будем сопоставлять уже пустые строки, но это не имеет значения. И теперь мы можем избавиться от\v
( очень волшебно вариант) (-2 байта)источник
:%s/^\s*$<cr>
AWK ,
1211 байтПопробуйте онлайн!
Я просто чувствовал, что у AWK тоже должен быть ответ
Работает:
источник
APL (Dyalog) ,
1110 байтов⎕R
это оператор, который выводит функцию, которая заменяет вещи. В этом случае все, что соответствует RegEx, заменяется пустой строкой.источник
Рубин, 22 байта
Простое решение регулярных выражений
источник
Java 7, 57 байт
Объяснение:
Тестовый код:
Попробуй это здесь.
источник
Groovy, 31 байт
источник
Perl 6 ,
1512 байт15
Попытайся
11 + 1
Во многом так же, как и выше.
-p
запускает код для каждой строки ввода, вставляет строку$_
и печатает все, что осталось$_
.s
заменяет на месте, тогда какS
возвращает результат.:g
/:global
как-p
заботится об этом.источник
Python 2 , 26 байт
Попробуйте онлайн!Вводит и выводит список строк.
Это использует преимущество в комментариях о том, что конечные пробелы могут быть удалены в непустых строках.
источник
Vim,
139 байт:v/\S/le↵
Редактирование:
Оригинальный ответ:
:v/\S/d↵
(на основании этого vim вопроса о SO ).Удаляет пустые строки, что не является ожидаемым поведением.
Правильный ответ с использованием vglobal :
:v/\S/norm D↵
Теперь используя команду ex выравнивания по левому краю вместо
normal D
источник
C 168 байт
Детальнее
источник
C, 100 байтов
Посмотрите, как это работает онлайн .
источник
QuadR , 5 байт
Попробуйте онлайн!
\s+
заменить один или несколько пробельных символов, а затем$
end of lineни с чем
источник