Estou tentando reverter uma string, para que isso 'abc defg hij'
se torne 'jih gfed cba'
. A solução que eu vim com é
join(reverse(split(l:text, '.\zs')), '')
Existe uma solução mais elegante ou devo me ater ao que foi apresentado?
1
Depende do que você quer dizer com "elegante". Não há função interna dedicada a reverter uma string, se é isso que você está perguntando. Se você quer fazer isso com duas ou menos chamadas para funções internas e sem instruções adicionais, isso também não parece possível.
—
Sato Katsura
Sua solução atual já é elegante e idiomática.
—
Romainl
Ignore o '.' na parte dividida.
—
Christian Brabandt
@SatoKatsura, na verdade, acho que é mais eficiente, porque o mecanismo regexp não precisa corresponder a nada. Além disso, esta é a maneira preferida da documentação.
—
Christian Brabandt
@ChristianBrabandt De acordo com o manual,
—
Sato Katsura
split()
sem a {keepempty}
opção, remova um único item vazio no início e um único item vazio no final. Atualmente, ele remove todos os itens vazios, incluindo os que estão no meio da lista (o que é mais útil que o comportamento documentado, se você me perguntar, mas provavelmente não o é). Eu acho que isso foi discutido recentemente vim_dev
.