Saya mencoba membalikkan sebuah string, sehingga 'abc defg hij'
menjadi 'jih gfed cba'
. Solusi yang saya temukan adalah
join(reverse(split(l:text, '.\zs')), '')
Apakah ada solusi yang lebih elegan atau haruskah saya tetap dengan apa yang saya hasilkan?
1
Itu tergantung pada apa yang Anda maksud dengan "elegan". Tidak ada fungsi internal yang didedikasikan untuk membalikkan string, jika itu yang Anda tanyakan. Jika Anda bermaksud melakukannya dengan dua atau kurang panggilan ke fungsi internal dan tidak ada pernyataan tambahan, itu sepertinya juga tidak mungkin.
—
Sato Katsura
Solusi Anda saat ini sudah elegan dan idiomatis.
—
romainl
Lewati '.' di bagian split.
—
Christian Brabandt
@SatoKatsura sebenarnya, saya pikir ini lebih efisien, karena mesin regexp tidak perlu cocok dengan apa pun. Lebih jauh, ini adalah cara yang lebih disukai dari dokumentasi.
—
Christian Brabandt
@ChristianBrabandt Menurut manual,
—
Sato Katsura
split()
tanpa {keepempty}
opsi harus menghapus satu item kosong di awal, dan satu item kosong di akhir. Saat ini menghapus semua item kosong, termasuk yang ada di tengah daftar (yang lebih berguna daripada perilaku yang didokumentasikan jika Anda bertanya kepada saya, tetapi Anda mungkin tidak). Saya pikir ini telah dibahas baru-baru ini vim_dev
.