Estoy tratando de invertir una cadena, por lo que se 'abc defg hij'
convierte 'jih gfed cba'
. La solución que se me ocurrió es
join(reverse(split(l:text, '.\zs')), '')
¿Existe una solución más elegante o debería seguir con lo que se me ocurrió?
1
Depende de lo que quieras decir con "elegante". No hay una función interna dedicada a invertir una cadena, si eso es lo que está preguntando. Si te refieres a hacerlo con dos o menos llamadas a funciones internas y sin declaraciones adicionales, tampoco parece posible.
—
Sato Katsura el
Su solución actual ya es elegante e idiomática.
—
romainl 01 de
Salta el '.' en la parte partida
—
Christian Brabandt
@SatoKatsura en realidad, creo que es más eficiente, porque el motor regexp no necesita coincidir con nada. Además, esta es la forma preferida de la documentación.
—
Christian Brabandt
@ChristianBrabandt De acuerdo con el manual,
—
Sato Katsura
split()
sin la {keepempty}
opción debe eliminar un solo elemento vacío al principio y un único elemento vacío al final. Actualmente elimina todos los elementos vacíos, incluidos los que están en el medio de la lista (que es más útil que el comportamiento documentado si me pregunta, pero probablemente no lo sea). Creo que esto se ha discutido recientemente vim_dev
.